LINQ 比较两个列表并将结果放入一个列表中

本文关键字:列表 一个 结果 比较 两个 LINQ | 更新日期: 2023-09-27 17:56:43

我有一个C#应用程序。我有两个相同自定义类型的列表("NewStock"和"OldStock"),即"书籍"。我想将任何作为列表NewStock但不在OldStock列表中的"Book"对象提取到一个名为ResultList的新列表中。请参阅下面的示例。我该怎么做?

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

 NewStock      OldStock
 A             A
 B             C
 C            
 D

我想要的结果,

ResultList
B
D

LINQ 比较两个列表并将结果放入一个列表中

var results = newStock.Except(oldStock).ToList() 

您可以提供一个自定义比较器来Except执行此操作。

使用,但要执行此操作:

示例可以在这里找到:MSDN

试试这个:

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