【问题标题】:LINQ Comparing two list and putting the results into one list [duplicate]LINQ比较两个列表并将结果放入一个列表[重复]
【发布时间】:2014-05-16 20:15:33
【问题描述】:

我有一个 C# 应用程序。我有两个相同自定义类型“Book”的列表(“NewStock”和“OldStock”)。我想将属于 NewStock 列表但不在 OldStock 列表中的任何“Book”对象提取到一个名为 ResultList 的新列表中。请看下面的例子。我该怎么做?

我已经在我的 Book 类上实现了 IEqualityComparer 接口,以便我检查一个 book 对象是否等于另一个。

 NewStock      OldStock
 A             A
 B             C
 C            
 D

我想要的结果,

ResultList
B
D

【问题讨论】:

  • var results = newStock.Except(oldStock).ToList() 并且您可以为Except 提供自定义比较器来执行此操作。
  • @AdamHouldsworth 给出了答案
  • @NathanKoop 完成,但我希望这将作为副本关闭。这些通常是。

标签: c# linq


【解决方案1】:
var results = newStock.Except(oldStock).ToList() 

您可以通过provide a custom comparerExcept 执行此操作。

【讨论】:

    【解决方案2】:

    使用 except 来执行此操作:

    可以在此处找到示例: MSDN

    【讨论】:

      【解决方案3】:

      试试这个:

      List<Book> ResultList = NewStock.Select(x=>!OldStock.Contains(x)).ToList();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多