【发布时间】:2023-03-29 14:02:01
【问题描述】:
我正在尝试使用 C# 中的 LINQ 获取数组中出现频率最高的值。
例如,
int[] input = {1, 1, 1, 3, 5, 5, 6, 6, 6, 7, 8, 8};
output = {1, 6}
int[] input = {1, 2, 2, 3 ,3, 3, 5}
output = {3}
请告诉我如何构建 LINQ。
请仔细阅读。 这是Select most frequent value using LINQ 的另一个问题
我必须只选择最常见的值。下面的代码类似,但是我不能使用Take(5),因为我不知道结果的数量。
int[] nums = new[] { 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7 };
IEnumerable<int> top5 = nums
.GroupBy(i => i)
.OrderByDescending(g => g.Count())
.Take(5)
.Select(g => g.Key);
这个输出是 {1, 2, 3, 4, 5} 但我的预期输出 = {1, 2}
请仔细阅读问题并回答。
感谢和问候。
【问题讨论】:
-
你
Take五个元素。您如何期望您的输出仅包含 两个 元素? (似乎相反,您必须过滤这些元素Where计数等于Max计数。)