如何在LINQ的GroupBy查询中返回未参与分组的属性及对应统计次数
LINQ分组查询保留未参与分组字段的解决方案
核心思路:你已完成按importCode+fromDate的正确分组,只需将每个分组下的所有行数据逐个展开,为每一行的billNo绑定当前分组的统计次数即可。
修正后的查询代码
var billNosWithCounts = rows .GroupBy(info => new { info.importCode, info.fromDate }) // 展开分组内所有条目,关联当前分组的计数 .SelectMany(group => group.Select(item => new { BillNo = item.billNo, Count = group.Count() })) // 可选:按billNo排序匹配你给出的预期输出顺序 .OrderBy(res => res.BillNo) .ToList();
扩展说明
如果需要同时保留分组的importCode、fromDate字段,可直接在最终投影中添加对应属性:
.SelectMany(group => group.Select(item => new { BillNo = item.billNo, group.Key.importCode, group.Key.fromDate, Count = group.Count() }))
运行上述代码后,输出结果与你给出的预期完全一致。
内容的提问来源于stack exchange,提问作者JanT
相关产品推荐
相关产品推荐

