我有一个主要的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);
}
答案 0 :(得分:8)
all_objects = all_objects.Except(some_of_the_objects);
答案 1 :(得分:1)
伊万的回答是正确的;首先,你可能需要一个本土的相等比较器,除非副本实际上是对同一个对象的另一个引用。但是如果你有一个唯一性单位(ID,名称,属性的某种组合),你可以将该func作为谓词传递给.Except,并根据需要对列表进行重复数据删除。