当前位置: 首页 > 编程语言 > C#

C#合并2个集合的不同项分享

时间:2023-04-10 17:04:38 C#

我正在使用.NET4。应该这样做:list1.Union(list2).Distinct(aCustomComparer).ToList()只要它们是IEnumerable,就可以使用Linq的答案:varunion=firstCollection.Union(secondCollection);这将使用默认的相等性比较,对于大多数对象,它是引用相等性。要更改此设置,您可以为集合中的项类型定义一个IEqualityComparergeneric以执行更多语义比较,并将其指定为Union的第二个参数。添加到现有列表的另一种方法是:list1.AddRange(list2.Distinct().Except(list1));您问题的最直接答案-因为您没有指定输入或需要输出的ICollection的实际类型,因为KeithS给出了varunion=firstCollection.Union(secondCollection);这将返回一个唯一的IEnumerable-如果这是您需要的,那么它非常快。我制作了一个小型测试应用程序(如下),它针对用于重复数据删除的简单哈希集方法运行联合方法(MethodA),并返回一个哈希集(MethodB)。union方法DESTROYS的哈希集:方法A:1ms方法B:2827ms但是-必须将IEnumerable转换为其他类型的集合,如List(如发布的ADas版本)会改变一切:只需将.ToList()添加到MethodA,然后varunion=firstCollection。联合(secondCollection).ToList();更改结果:方法A:3656毫秒方法B:2803毫秒所以-似乎需要知道您正在使用的具体情况-并且应该测试您提出的任何解决方案-因为小的(代码)更改会产生巨大的影响。这是我用来比较方法的测试-我敢肯定这是一种愚蠢的测试方式-但它似乎有效:)以上是关于C#学习教程的全部内容:C#MergingDistinctItemsof2Collections每个人都有用并且需要了解更多C#学习教程,希望大家多多关注—privatestaticvoidMain(string[]args){ICollectioncollectionA=newList();ICollectioncollectionB=newList();for(inti=0;icollectionA,ICollectioncollectionB){for(inti=0;icollectionA,ICollectioncollectionB){for(inti=0;i(collectionA);foreach(stringsincollectionB){结果。Add(s);}}}本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,转载请注明出处: