C # Удалить дубликаты объектов из коллекции IEnumerable - PullRequest
1 голос
/ 25 июля 2011

у меня есть основная коллекция IEnumerable, и еще одна маленькая колдунья содержит несколько дубликатов из большой коллекции,

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

Я ищу "более привлекательный" способ удаления всех объектов из some_of_the_objects. из all_objects, без необходимости перебирать меньшую коллекцию

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

Ответы [ 2 ]

8 голосов
/ 25 июля 2011
all_objects = all_objects.Except(some_of_the_objects);
1 голос
/ 25 июля 2011

Иван ответ на правильном пути;Во-первых, вам может понадобиться встроенный компаратор равенства, если только дубликат не является буквально другой ссылкой на тот же объект.Но если у вас есть единица уникальности (идентификатор, имя, некоторая комбинация свойств), вы можете передать эту функцию в качестве предиката для .Except и удалить список из списка по своему усмотрению.

...