【问题标题】:C# Remove objects in one IEnumerable from another IEnumerableC# 从另一个 IEnumerable 中删除一个 IEnumerable 中的对象
【发布时间】:2011-10-12 07:26:29
【问题描述】:

我有一个主要的 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); 
  }

【问题讨论】:

标签: c# collections ienumerable


【解决方案1】:
all_objects = all_objects.Except(some_of_the_objects);

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 记录是对相同对象的引用,所以伊万的回答似乎有效。不过感谢您提供的信息。
    猜你喜欢
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多