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

C#中如何将LINQ分组统计结果转为指定对象列表

解决方法:替换匿名类型为自定义实体类

这问题太常见啦!你当前的LINQ查询返回匿名类型,是因为用了new {}语法。要得到目标对象列表,只需要两步走:

1. 定义对应的数据实体类

首先创建一个和你需要的结果结构匹配的类,比如命名为ProfessionCount(你也可以根据业务场景改名字):

public class ProfessionCount
{
    public string Profession { get; set; }
    public int Count { get; set; }
}

这个类的属性要和你分组后的g.Key(对应description)、g.Count()的类型匹配——这里假设e.description是字符串,计数是整数,你可以根据实际类型调整。

2. 修改LINQ查询,实例化自定义类

把原来的匿名对象替换成你刚定义的ProfessionCount实例就行:

// 现在返回的是IEnumerable<ProfessionCount>类型
var dataPoints = from e in evaluations.Take(20)
                 group e.EvaluationID by e.description into g
                 select new ProfessionCount 
                 { 
                     Profession = g.Key, 
                     Count = g.Count() 
                 };

如果直接需要List<ProfessionCount>,只需要在查询末尾加上.ToList():

List<ProfessionCount> dataPointsList = dataPoints.ToList();

额外:方法语法写法(可选)

如果你偏好LINQ的方法链式写法,效果是一样的:

var dataPointsList = evaluations.Take(20)
                                .GroupBy(e => e.description)
                                .Select(g => new ProfessionCount
                                {
                                    Profession = g.Key,
                                    Count = g.Count()
                                })
                                .ToList();

这样处理后,你得到的就是强类型的对象列表,后续不管是绑定UI、序列化还是做其他业务操作都更方便啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:10:19