【发布时间】:2015-03-24 04:10:48
【问题描述】:
例如,我有这个列表。
List<int> numbers = new List<int>() { 1, 1, 2, 2, 3, 3, 4 };
我想获得另一个列表,其中包含该列表中每个不同项目的计数,因此类似于 2,2,2,1。我想可以通过使用 foreach 来实现它,但是有可能以更简单的方式(可能是 LINQ)吗?谢谢。
【问题讨论】:
-
按列表元素进行分组
例如,我有这个列表。
List<int> numbers = new List<int>() { 1, 1, 2, 2, 3, 3, 4 };
我想获得另一个列表,其中包含该列表中每个不同项目的计数,因此类似于 2,2,2,1。我想可以通过使用 foreach 来实现它,但是有可能以更简单的方式(可能是 LINQ)吗?谢谢。
【问题讨论】:
var counts = numbers.GroupBy(x => x)
.Select(g => new { Number = g.Key, Count = g.Count() })
.ToList();
你也可以使用字典来代替匿名对象
var counts = numbers.GroupBy(x => x)
.ToDictionary(x => x.Key, x => x.Count());
【讨论】: