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

如何编写LINQ查询实现Orders和Details主从表关联结果嵌套列表输出

实现方案

你可以使用LINQ的**组连接(Group Join)**特性实现需求,无需修改现有模型即可直接生成一对多的嵌套结构结果:

1. 查询语法写法

from order in db.Orders
join detail in db.Details on order.id equals detail.order into orderDetails
// 可选:过滤没有明细的订单,加上下行即可
// where orderDetails.Any()
select new OrderDetail
{
    orderId = order.id,
    details = orderDetails.ToList()
}

2. 方法语法写法

var result = db.Orders
    .GroupJoin(
        db.Details,
        order => order.id,
        detail => detail.order,
        (order, details) => new OrderDetail
        {
            orderId = order.id,
            details = details.ToList()
        }
    )
    // 可选:过滤没有明细的订单,加上下行即可
    // .Where(o => o.details.Any())
    .ToList();

优化方案(EF/EF Core环境适用)

如果你使用的是Entity Framework或者EF Core,推荐在模型中配置导航属性,查询写法会更简洁:

  1. 先修改Order模型添加导航属性:
public class Order {
  public int id { get; set;}
  // 新增关联明细的导航属性,EF会自动识别外键关系
  public List<Detail> Details { get; set;}
}
  1. 直接使用Include加载关联数据即可:
var result = db.Orders
    .Include(o => o.Details)
    // 可选:过滤没有明细的订单
    // .Where(o => o.Details.Any())
    .Select(o => new OrderDetail
    {
        orderId = o.id,
        details = o.Details
    })
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:06:03