C#从IEnumerable集合中删除重复的对象

时间:2011-07-25 04:23:52

标签: c# collections ienumerable

我有一个主要的IEnumerable系列, 另一个较小的收藏品包含较大系列中的一些副本,

   IEnumerable<T> all_objects ;
   IEnumerable<T> some_of_the_objects ;

我正在寻找一种“更好看”的方法来从some_of_the_object中删除所有对象 来自all_objects,无需循环访问较小的集合

  foreach(T _object in some_of_the_objects)
  {
      all_objects.Remove(_object); 
  }

2 个答案:

答案 0 :(得分:8)

all_objects = all_objects.Except(some_of_the_objects);

答案 1 :(得分:1)

伊万的回答是正确的;首先,你可能需要一个本土的相等比较器,除非副本实际上是对同一个对象的另一个引用。但是如果你有一个唯一性单位(ID,名称,属性的某种组合),你可以将该func作为谓词传递给.Except,并根据需要对列表进行重复数据删除。