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

如何使用Dynamic Linq选取IGrouping中的所有分组项?

解决Dynamic LINQ中获取IGrouping所有元素的问题

你当前查询仅返回分组首个元素,原因是在selectGrouping中使用it.First()生成Value,这只会提取分组中的第一个元素,而非整个分组的集合。IGrouping本身继承了IEnumerable<T>,代表整个分组的元素序列,只需直接引用这个序列就能获取所有项。

修改方案

调整selectGrouping的定义,将Value部分从取单个元素改为引用整个分组的元素集合:

var selectGrouping = 
"new (it.Key as Key 
, it.Select(it.CentroId).Distinct().Count() as CantidadCentros
, it.Select(it.OfertaFomativaId).Distinct().Count() as Acciones
, it.ToList() as Value)"

说明

  • it代表当前的IGrouping实例,it.ToList()会将分组内所有元素转换为列表赋值给Value,以此获取分组全部数据。
  • 若无需立即转为List,也可直接写it as Value,后续仍能遍历这个IEnumerable序列。

如果需要对分组内元素做进一步字段筛选(仅保留指定字段),可在it后添加动态Select:

var selectGrouping = 
"new (it.Key as Key 
, it.Select(it.CentroId).Distinct().Count() as CantidadCentros
, it.Select(it.OfertaFomativaId).Distinct().Count() as Acciones
, it.Select(new (AccionFormativaId, EstadoId, OfertaFormativaNombre, AmbitoNombre, CantidadAcciones, CentroId)).ToList() as Value)"

修改后的完整查询代码保持不变:

var re = queryable
             .Select(select)
             .GroupBy(fields, "it")
             .Select(selectGrouping)
             .ToDynamicList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:20:27