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

如何将含JOIN的SQL GROUP BY查询转换为LINQ查询

修正后的LINQ GROUP BY查询

你的目标是关联Person和Salary表,按Person.Unit分组统计各部门人数与工资总和,原LINQ代码存在语法与逻辑错误,以下是修正后的版本:

var summarySalary = (
    from c in _context.Person
    join l in _context.Salary on c.Person_id equals l.Person_id
    // 分组时同时保留Person和Salary的关联数据,避免丢失Salary字段
    group new { Person = c, Salary = l } by c.Unit into g
    select new
    {
        // 分组的Key对应原SQL的Person.Unit
        Units = g.Key,
        // 统计分组内的人数(关联后的有效记录数)
        QuanPer = g.Count(),
        // 对分组内的Salary.Val求和
        TotVal = g.Sum(item => item.Salary.Val)
    }).ToList();

原代码错误说明:

  • 分组语法错误:group c by c.Unit into to g 属于语法错误,且仅分组c会丢失Salary字段,无法完成工资求和,需改为同时包含关联数据的分组写法。
  • 作用域错误:分组后原变量c的作用域已结束,不能直接访问,需通过分组对象g的Key获取分组字段值。
  • 统计逻辑错误:c.Unit.Count() 是对字符串长度计数,正确的人数统计应为g.Count(),统计分组内的元素数量。
  • 求和逻辑错误:g.Val.Sum() 无对应属性,需通过分组元素中的Salary对象获取Val字段后求和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:09:09