在使用 LINQ 的对面到内部联接查询方面需要帮助

Posted

技术标签:

【中文标题】在使用 LINQ 的对面到内部联接查询方面需要帮助【英文标题】:Need help with an Opposite to Inner join Query using LINQ 【发布时间】:2010-10-12 03:51:23 【问题描述】:

我在一个 XML 数据集中有两个表。 T1,T2。每个表都有一个 ID 列。

T1 有一个客户列表 T2 有一个订单列表

我想构建一个 LINQ 查询,它只返回没有订单的客户的 ID。换句话说,T2 表中不存在的客户 ID。

哦,是的,我正在使用 C#

谢谢!

【问题讨论】:

【参考方案1】:

这需要一个外连接和一个空检查。

var result = from c in Customers
             join d in Details on d.CustomerID equals c.ID into g
             where !g.Any()
             select c;

【讨论】:

【参考方案2】:

我认为这会起作用(请适应您的数据集):

var query = from c in T1
            where !(from o in T2 select o.CustomerID)
            .Contains(c.CustomerID)
            select c;

【讨论】:

哇——太简单了!感谢您的帮助【参考方案3】:

您只需要给我们一个 where 子句即可:

T1.Where( item1 => T2.All( item2 => item1.ID != item2.ID ) );

【讨论】:

以上是关于在使用 LINQ 的对面到内部联接查询方面需要帮助的主要内容,如果未能解决你的问题,请参考以下文章

如何将此 SQL 内部联接查询转换为 LINQ 语法?

具有内部联接、多个分组依据和最小最大值的 Linq 查询

如何将带有内连接的 sql 查询转换为 linq lambda 表达式?

LINQ to SQL 中的内部联接的语法是啥?

如何将 SQL 中的多个内部联接转换为 LINQ?

Linq中向实体左联接的Sql查询