我有两个集合,它们在两个集合中都有属性 Email
。我需要获取第一个列表中的项目列表,其中 Email
在第二个列表中不存在。对于 SQL,我只会使用“not in”,但我不知道 LINQ 中的等价物。这是怎么做到的?
到目前为止我有一个连接,比如...
var matches = from item1 in list1
join item2 in list2 on item1.Email equals item2.Email
select new { Email = list1.Email };
但我无法加入,因为我需要差值,而且加入会失败。我相信我需要某种使用 Contains 或 Exists 的方法。我只是还没有找到这样做的例子。
最佳答案
您需要 Except 运算符。
var answer = list1.Except(list2);
这里有更好的解释:https://learn.microsoft.com/archive/blogs/charlie/linq-farm-more-on-set-operators
注意:此技术仅适用于原始类型,因为您必须实现 IEqualityComparer对复杂类型使用 Except
方法。
关于c# - 您将如何使用 LINQ 执行 "not in"查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/183791/