You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LINQ方法语法实现LEFT OUTER JOIN查询

正确实现(LINQ方法语法)

var result = db.Customers
    .GroupJoin(
        db.Orders,
        customer => customer.Custid,
        order => order.Custid,
        (customer, matchedOrders) => new { customer, matchedOrders }
    )
    .SelectMany(
        pair => pair.matchedOrders.DefaultIfEmpty(),
        (pair, order) => new
        {
            pair.customer.Custid,
            pair.customer.Companyname,
            orderid = order == null ? -1 : order.Orderid
        }
    );

说明

你最初使用的Join是内连接方法,仅返回两边关联键匹配的记录,所以会过滤掉没有对应订单的客户。
查询语法中的join ... into逻辑对应方法语法的GroupJoin方法,它会将每个客户匹配到的所有订单聚合为一个集合,再配合DefaultIfEmpty()保证当某客户没有匹配订单时,也会返回一条空值记录,完全等价你写的查询语法,生成的SQL也和原T-SQL的左外连接一致。

内容的提问来源于stack exchange,提问作者dharmatech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:39:00