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

如何修改LINQ查询,实现按所有不同城市动态统计职业分组数据

动态统计各职业下不同城市人数的LINQ解决方案

嘿,这个需求很好解决!要摆脱硬编码城市名称的限制,咱们可以先获取所有人员里的唯一城市列表,再基于这个统一的列表去统计每个职业组对应的各城市人数,具体实现如下:

第一步:提取所有唯一城市

先从所有Person对象中提取出不重复的城市,还可以顺便排序,保证后续统计的城市顺序一致:

// 获取所有唯一城市并排序
var allUniqueCities = people.Select(p => p.City)
                            .Distinct()
                            .OrderBy(city => city)
                            .ToList();

第二步:修改分组统计查询

基于上面拿到的城市列表,修改原有的分组查询,动态遍历每个城市统计人数:

var professionCityStats = people
    .GroupBy(p => p.Profession)
    .Select(professionGroup => new 
    {
        ProfessionName = professionGroup.Key,
        CityCounts = allUniqueCities
            .Select(city => professionGroup.Count(person => person.City == city))
            .ToList()
    });

为什么这么做?

  • 不用再硬编码任何城市名称,不管数据源里新增或减少城市,代码都能自动适配
  • OrderBy(city => city)保证了所有职业组的城市统计顺序完全一致,后续展示数据时不会出现顺序混乱的问题
  • 如果某个职业组里没有某个城市的人员,Count()会返回0,保证了数据结构的完整性

举个例子,假设数据源里有Adelaide、Brisbane、Sydney三个城市,每个职业组的CityCounts列表都会按这个顺序返回对应城市的人数,完美替代原来的硬编码写法~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:08:55