C#学习教程:在C#中查找两个集合的补集的最快方法我想在c2中找到不在c1中的项集,其中相等性启发式是MyType上的Id属性。在C#(3.0)中执行此操作的最快方法是什么?使用Enumerable.Except,特别是接受IEqualityComparer的重载:varcomplement=c2.Except(c1,newMyTypeEqualityComparer());请注意,这会产生设置差异,因此c2副本只会在生成的IEnumerable中出现一次。这里需要实现IEqualityComparerclassMyTypeEqualityComparer:IEqualityComparer{publicboolEquals(MyTypex,MyTypey){returnx.Id.Equals(y.Id);}publicintGetHashCode(MyTypeobj){returnobj.Id.GetHashCode();如果使用C#3.0+Linq:varcomplement=fromi2inc2wherec1.FirstOrDefault(i1=>i2.Id==i1.Id)==nullselecti2;遍历补语以获取项目。公共类MyTypeComparer:IEqualityComparer{publicMyTypeComparer(){}#regionIComparerMemberspublicboolEquals(MyTypex,MyTypey){returnstring.Equals(x.Id,y.Id);}publicintGetHashCode(MyTypeobj){returnbase.GetHashCode();}#endregion}然后,使用Linq:c3collection=newcollection().add(c1);c3.add(c2);varitems=c3.Distinct(newMyTypeComparer());你也可以使用泛型和谓词来完成。如果您需要样品,请告诉我。以上就是C#学习教程:C#中求两个集合补的最快方法。分享的所有内容,如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络收藏,不代表立场,如涉及侵权,请谅解点击右侧联系管理员删除。如需转载请注明出处:
