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

如何使用LINQ GroupBy查询集合中出现次数最多的status值

问题根因

你原有代码存在逻辑错误:分组后没有统计每个status的出现频次,反而对分组内的status值做排序,和「找出现次数最多的status」的需求完全不匹配。

正确简洁实现

直接分组后按分组元素数量倒序,取首位分组的Key即可:

var mostFrequentStatus = listTest
    .GroupBy(x => x.status)
    .OrderByDescending(group => group.Count())
    .First()
    .Key;

如果需要兼容空集合的场景,可增加空安全处理:

// 空集合时返回int默认值0,可按需调整默认值
var mostFrequentStatus = listTest
    .GroupBy(x => x.status)
    .OrderByDescending(group => group.Count())
    .FirstOrDefault()?
    .Key ?? default;

逻辑说明

  • GroupBy(x => x.status):将所有元素按status值分组,每个分组的Key为对应的status值,调用分组的Count()方法即可得到该status的出现次数
  • OrderByDescending(group => group.Count()):按各status的出现次数从高到低排序所有分组
  • 取排序后的第一个分组的Key,就是出现次数最多的status值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:54:04