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

如何使用C# LINQ获取数组中所有出现频率最高的元素

解决方案

写法1:逻辑清晰的分步实现

int[] nums = new[] { 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7 };

// 按元素值分组
var valueGroups = nums.GroupBy(x => x);
// 计算最高出现频率
int maxFreq = valueGroups.Max(g => g.Count());
// 筛选所有频率等于最高频率的元素
List<int> result = valueGroups
    .Where(g => g.Count() == maxFreq)
    .Select(g => g.Key)
    .ToList();

这种写法可读性高,维护方便,适合绝大多数业务场景。

写法2:单条LINQ语句实现

如果希望写成单条链式调用的LINQ语句,可以对分组结果按出现次数二次分组:

List<int> result = nums
    .GroupBy(x => x)
    .GroupBy(g => g.Count()) // 按元素的出现次数二次分组
    .OrderByDescending(g => g.Key) // 按出现次数降序排序
    .First() // 取出现次数最高的那一组分组
    .Select(g => g.Key) // 提取元素值
    .ToList();

两种写法都可以自动适配任意数量的最高频元素,不需要提前指定返回结果的个数,完全符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:48:00