假设我有 2List<T>
List1 和 List2 如下所示:
List 1:
[ID:1, Name:"item1"]
[ID:2, Name:"item2"]
[ID:3, Name:"item3"]
[ID:4, Name:"item4"]
List 2:
[ID:2, Name:"item2"]
[ID:3, Name:"item3"]
[ID:5, Name:"item5"]
[ID:6, Name:"item6"]
如何获取仅包含两个列表中的对象的列表?使用上面的例子,我想返回:
[ID:2, Name:"item2"]
[ID:3, Name:"item3"]
修改原来的列表就OK了。最好的方法是什么?
var result = list1.Intersect(list2).ToList();
是最简洁的。但请记住,它使用的是默认的相等比较器,它可能适合您,也可能不适合您。如果没有,您可以提供自己的:
public class MyEqualityComparer : IEqualityComparer<Foo>
{
public bool Equals(Foo x, Foo y)
{
return x.Id == y.Id;
}
public int GetHashCode(Foo obj)
{
return obj.Id.GetHashCode();
}
}
var result = list1.Intersect(list2, new MyEqualityComparer()).ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)