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

LINQ分组处理:解决数据录入错误,按ItemNo分组取首个ItemName

问题:分组时处理ItemNo相同但ItemName不一致的情况

现有如下数据,需要按ItemNo分组,但因录入错误,相同ItemNo可能对应不同ItemName(比如Item#1同时有Name_11和Name_12),导致原本应该合并的分组被拆分。需求是:相同ItemNo的组统一取该组的第一个ItemName,同时保留原有的统计逻辑。

ItemNoItemNameOther Data
Item#1Name_11Other
Item#1Name_12Other
Item#2Name_21Other

原代码会同时按ItemNo和ItemName分组,无法满足需求,修改后的代码如下:

var _qry = _models
    .GroupBy(x => x.ItemNo) // 仅按ItemNo分组,确保相同ItemNo的所有数据在同一组
    .Select(y => new {
        ItemNo   = y.Key,
        ItemName = y.First().ItemName, // 取该组第一个元素的ItemName作为统一名称
        Other1   = y.Count(x => x.ID != 0),
        Other2   = y.Count(x => x.ID != 0 && (x.Completed == false || x.Completed == null))
    })
    .ToList();

关键修改说明:

  • 把GroupBy的分组键从new {x.ItemNo, x.ItemName}改为仅x.ItemNo,这样同一个ItemNo的所有记录会被归为一组,避免因ItemName不一致拆分分组。
  • 在Select中,通过y.First().ItemName获取该组第一条记录的ItemName,作为整个组的统一名称,解决录入错误导致的名称不一致问题。
  • 统计Other1和Other2的逻辑保持不变,依然基于整个分组的所有数据计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:07:49