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

时间:2014-04-04 13:24:27

标签: c# linq

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

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

 NewStock      OldStock
 A             A
 B             C
 C            
 D

结果我想,

ResultList
B
D

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

使用除此之外:

示例可以在这里找到: MSDN

答案 2 :(得分:1)

试试这个:

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