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

Linq GroupBy实现分组内取最大Type对应最大Model的问题及修复方案

嘿,这个问题我熟!你想要的是每个品牌(maker)下,先找到最大的车型类型(type),再在这个类型里挑出型号(model)最大的那一个对吧?

先说说你之前的问题:第二次嵌套GroupBy后,返回的是每个品牌下按type分组的集合,而不是每个品牌对应的单个目标元素,所以结果不符合预期。下面给你两种简洁的解决办法:

方法一:多重排序直接取首元素

最直观的方式就是在每个品牌的分组里,先按type降序排,type相同的再按model降序排,然后取第一个元素就行:

var results = list
    .GroupBy(x => x.maker)
    .Select(g => g.OrderByDescending(e => e.type)
                  .ThenByDescending(e => e.model)
                  .First())
    .ToList();

方法二:先找最大type再筛选

如果不想做全量排序(数据量大的时候性能可能更优),可以先拿到分组里的最大type值,再筛选出所有等于这个type的元素,最后取其中model最大的:

var results = list
    .GroupBy(x => x.maker)
    .Select(g => 
    {
        int maxType = g.Max(e => e.type);
        return g.Where(e => e.type == maxType)
                .OrderByDescending(e => e.model)
                .First();
    })
    .ToList();

两种方法跑出来的结果都是你要的预期值:

{ maker = Volvo, type = 8, model = 100 }
{ maker = GM, type = 9, model = 50 }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 13:28:19