Ben*_*Ben 26 .net c# linq complement set-operations
我有两个类型ICollection<MyType>称为c1和的集合c2.我想找到的一组是在项目c2中没有的c1,在争取平等的启发是Id物业MyType.
在C#(3.0)中执行此操作的最快方法是什么?
jas*_*son 38
使用Enumerable.Except并特别是接受以下的重载IEqualityComparer<MyType>:
var complement = c2.Except(c1, new MyTypeEqualityComparer());
Run Code Online (Sandbox Code Playgroud)
请注意,这会产生设置差异,因此重复c2内容只会出现在结果中IEnumerable<MyType>.在这里你需要实现IEqualityComparer<MyType>类似的东西
class MyTypeEqualityComparer : IEqualityComparer<MyType> {
public bool Equals(MyType x, MyType y) {
return x.Id.Equals(y.Id);
}
public int GetHashCode(MyType obj) {
return obj.Id.GetHashCode();
}
}
Run Code Online (Sandbox Code Playgroud)