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

EF 6/.NET Core 5中GroupBy分组后选取Min值及对应字段运行报错问题

LINQ按RateClass分组查询崩溃问题修复

你代码里存在的问题:

  • 语法错误1:costWeek = g.Select(x => .CostWeek) 漏写了lambda参数引用,应为x => x.CostWeek,该问题会直接导致编译不通过
  • 语法错误2:自定义输出字段名costtDay多写了一个字母t,属于拼写笔误,后续调用该字段时会找不到对应属性
  • 逻辑错误1:分组后RateClass就是分组的键,不需要g.Select(x => x.RateClass),这会返回当前分组下所有RateClass的集合而非单个值,直接取g.Key即可
  • 逻辑错误2:g.Select(x => x.CostWeek)返回的是当前分组下所有CostWeek的集合,如果你需要的是单个值,需要指定聚合逻辑(比如取最小CostDay对应的CostWeek、取分组的最小CostWeek等),如果确实需要返回集合也需要确认下游逻辑是否支持接收集合类型

修复后的示例代码

场景1:需要返回每个分组的RateClass、最小CostDay、分组下所有CostWeek列表

var data = db.Rates
    .GroupBy(t => t.RateClass)
    .Select(g => new 
    {  
        RateClass = g.Key, 
        MinCostDay = g.Min(x => x.CostDay), 
        CostWeekList = g.Select(x => x.CostWeek).ToList()
    })
    .ToList();

场景2:需要返回每个分组下CostDay最小的那条记录的RateClass、CostDay、CostWeek

var data = db.Rates
    .GroupBy(t => t.RateClass)
    .Select(g => g.OrderBy(x => x.CostDay).First())
    .Select(x => new 
    {
        x.RateClass,
        x.CostDay,
        x.CostWeek
    })
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:00:05