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

如何正确使用LINQ GroupBy扩展方法结合聚合函数实现分组统计

原代码问题说明

  • 提前调用AsEnumerable()会将全表数据加载到内存后再执行分组,性能极低,且不符合查询设计逻辑
  • GroupBy分组键配置错误:将单条数据的MemberId长度也作为分组维度,和你按postSubjectId分组统计的需求完全不符
  • 多余的前置Select操作,无需提前投影字段,直接在分组后做聚合即可

正确实现代码

和你给出的原生SQL逻辑完全对齐的LINQ写法如下:

var mmbrs = _context.Rooms
    .GroupBy(r => r.postSubjectId)
    .Select(g => new 
    {
        postId = g.Key,
        mmbrsCount = g.Count(r => r.MemberId != null)
    })
    .ToList();

上述代码会被EF Core直接翻译成等效的SQL语句在数据库侧执行,执行效率和你手写原生SQL一致。如果你需要统计每组内不重复的MemberId数量,只需要把统计逻辑改成g.Select(r => r.MemberId).Distinct().Count()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:36:02