c# - 您将如何使用 LINQ 执行 "not in"查询?

标签 c# linq

我有两个集合,它们在两个集合中都有属性 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/

相关文章:

c# - 顶点属性缓冲区绑定(bind)到错误的属性

c# - .NET AddDays 问题

c# - 如何加入两个列表?

c# - LINQ子查询 "NOT IN"问题

c# - Select 中的 LINQ to SQL 反射

c# - 将 foreach 与 ArrayList 一起使用 - 自动转换?

c# - 使用open xml和C#将图像插入到word文档中

c# - 如果我有大量数据要在 Microsoft Chart 中显示,如何快速刷新图表

C# 关于 lambda 表达式的解释

c# - 在列表集合中查找对象