gpt4 book ai didi

c# - 通过 lambda 从另一个集合中排除一个集合

转载 作者:行者123 更新时间:2023-11-30 13:17:23 25 4
gpt4 key购买 nike

这是我喜欢的类型:

public class myType
{
public int Id { get; set; }
public string name { get; set; }
}

并且有 2 个这种类型的集合:

List<myType> FristList= //fill ;
List<myType> Excludelist= //fill;

我需要从 FristList 中排除 Excludelist,如下所示:

List<myType> targetList = 
FirstList.Where(m=>m.Id not in (Excludelist.Select(t=>t.Id));

您对上述查询的确切 lambda 表达式有何建议?

最佳答案

三个选项。一个没有任何变化:

var excludeIds = new HashSet<int>(excludeList.Select(x => x.Id));
var targetList = firstList.Where(x => !excludeIds.Contains(x.Id)).ToList();

或者,覆盖 EqualsGetHashCode并使用:

var targetList = firstList.Except(excludeList).ToList();

或者写一个IEqualityComparer<MyType>通过 ID 进行比较,并使用:

var targetList = firstList.Except(excludeList, comparer).ToList();

第二个和第三个选项在我看来肯定更好,尤其是当您需要在不同的地方进行此类工作时。

关于c# - 通过 lambda 从另一个集合中排除一个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9748138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com