如何在C# ASP.NET Core中使用Linq统计列表元素重复次数?
用Linq统计列表元素的出现次数
针对给定的列表:
new List<int> { 1, 1, 5, 6, 7, 7, 7 }
可以通过Linq的GroupBy方法实现元素出现次数的统计,具体实现如下:
核心实现代码
- 定义目标列表:
var numbers = new List<int> { 1, 1, 5, 6, 7, 7, 7 };
- 用Linq分组并统计次数:
// 生成包含数字和对应出现次数的集合 var countCollection = numbers.GroupBy(n => n) .Select(g => new { Number = g.Key, OccurrenceCount = g.Count() });
- 遍历输出结果:
foreach (var item in countCollection) { Console.WriteLine($"{item.Number} 出现 {item.OccurrenceCount} 次"); }
运行后会输出:
1 出现 2 次 5 出现 1 次 6 出现 1 次 7 出现 3 次
进阶:转为字典快速查询
如果需要直接通过元素值获取次数,可以将结果转为Dictionary<int, int>:
var countDict = numbers.GroupBy(n => n) .ToDictionary(g => g.Key, g => g.Count()); // 直接查询元素1的出现次数 int oneCount = countDict[1]; // 结果为2
原理说明
GroupBy(n => n):将列表中相同的int元素归为一组,每组的Key就是该元素的值。g.Count():统计当前分组内的元素数量,也就是对应元素的出现次数。Select/ToDictionary:将分组结果转换为更易使用的格式,方便后续输出或查询。
内容的提问来源于stack exchange,提问作者Noah Bergh
相关产品推荐
相关产品推荐

