Jas*_*wne 1 c# linq generics list
假设我有2个List<T>List1和List2,如下所示:
清单1:
[ID:1, Name:"item1"]
[ID:2, Name:"item2"]
[ID:3, Name:"item3"]
[ID:4, Name:"item4"]
Run Code Online (Sandbox Code Playgroud)
清单2:
[ID:2, Name:"item2"]
[ID:3, Name:"item3"]
[ID:5, Name:"item5"]
[ID:6, Name:"item6"]
Run Code Online (Sandbox Code Playgroud)
如何获取仅包含两个列表中的对象的列表?使用上面的例子,我想返回:
[ID:2, Name:"item2"]
[ID:3, Name:"item3"]
Run Code Online (Sandbox Code Playgroud)
修改原始列表是可以的.最好的方法是什么?
var result = list1.Intersect(list2).ToList();
Run Code Online (Sandbox Code Playgroud)
最简洁.但请记住,它使用的默认相等比较器可能适用于您,也可能不适合您.如果没有,您可以提供自己的:
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();
Run Code Online (Sandbox Code Playgroud)