gpt4 book ai didi

c# - LINQ - 查找一个列表中不在另一个列表中的所有项目

转载 作者:IT王子 更新时间:2023-10-29 03:53:31 26 4
gpt4 key购买 nike

我受困于 LINQ 查询(或任何其他完成同一事情的有效方法)。有人可以告诉我如何选择一个列表中不存在于另一个列表中的所有项目吗?

基本上,我有一个列表,它是通过在其他两个列表之间匹配项目而形成的。我需要在第一个列表中找到所有未找到匹配项的项目。有人可以用实现此目标的查询在下面的第二个 LINQ 查询中填上星星吗?如果我使用 TSQL,我会执行 SELECT * NOT IN (),但我认为 LINQ 不允许这样做。

//Create some sample lists.
List<IdentifierLookupData> list1 = new List<IdentifierLookupData> { /*Init */ };
List<IdentifierLookupData> list2 = new List<IdentifierLookupData> { /*Init */ };

//Find all items in list1 and list2 that match and store them in joinItems.
var joinItems = (from d1 in list1
join d2 in list2 on d1 equals d2
select d1).ToList<IdentiferLookupData>();

//Find all items in list1 not in joinItems.
var deletedItems = (from d1 in list1
***select all items not found in joinItems list.***

最佳答案

尝试使用.Except 扩展方法(docs) :

var result = list1.Except(list2);

将为您提供 list1 中不在 list2 中的所有项目。

重要提示:尽管为该方法提供了指向 MSDN 文档的链接,我还是要在这里指出这一点:Except only works out of the box for primitive types, for POCOs/objects您需要在该对象上实现 IEquatable。

关于c# - LINQ - 查找一个列表中不在另一个列表中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11418942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com