LINQ比较两个列表并将结果放入一个列表[重复]

Posted

技术标签:

【中文标题】LINQ比较两个列表并将结果放入一个列表[重复]【英文标题】:LINQ Comparing two list and putting the results into one list [duplicate] 【发布时间】: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 给出了答案 可能相关:***.com/questions/3944803/… @NathanKoop 完成,但我希望这将作为副本关闭。这些通常是。 【参考方案1】:
var results = newStock.Except(oldStock).ToList() 

您可以通过provide a custom comparer 到Except 执行此操作。

【讨论】:

【参考方案2】:

使用 except 来执行此操作:

可以在此处找到示例: MSDN

【讨论】:

【参考方案3】:

试试这个:

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

【讨论】:

以上是关于LINQ比较两个列表并将结果放入一个列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

c# 在 LINQ 查询返回的列表中查找项目并将其值与列表中的另一个项目进行比较

在python中比较两个列表,并将结果保存在一个单独的列表中。

如何使用 LINQ 从列表中获取重复项? [复制]

结合列表中实体的两个属性并将其与 Linq 展平

如何使用LINQ从列表中获取重复项?

使用Linq获取列表中对象的索引[重复]