我有这个列表。
List<int> numbers = new List<int>() { 1, 1, 2, 2, 3, 3, 4 };
我想得到另一个列表,列出该列表中每个不同项目的数量,所以像这样的2,2,2,1。我想通过使用foreach可以达到它,但它是否可能更容易(LINQ可能)?感谢。
答案 0 :(得分:7)
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());