我是C#的新手,所以对我轻松一点。无论如何,我列出了数字
List<int> numbers = new List<int>();
我想列出每个数字及其计数/频率。
var grouped = numbers
.GroupBy(i => i)
.Select(i => new { Number = i.Key, Count = i.Count() });
在本地人中,我可以看到该组,该组具有一个IEnumerator接口,其中包含所有数字及其计数值image of what I'm talking about。那么有没有办法列出数字及其频率/计数?
谢谢。
最佳答案
IEnumerable<T>
是一个序列,因此它没有计数。但是Enumerable.Count
是IEnumerable<T>
的扩展方法
也就是说,您不一定需要将IEnumerable<T>
转换为List<T>
:
var grouped = numbers
.GroupBy(i => i)
.Select(i => new { Number = i.Key, Count = i.Count() });
var groupedCount = grouped.Count();
// You may iterate grouped
foreach(var value in grouped)
{
Console.WriteLine($"{value.Number} {value.Count}");
}
如果您确实需要
List<T>
语义,则只需调用Enumerable.ToList
:var grouped = numbers
.GroupBy(i => i)
.Select(i => new { Number = i.Key, Count = i.Count() })
.ToList();
另一方面,您可以将所有内容直接转换为
string
,如下所示:var groupText = string.Join("\n", numbers
.GroupBy(i => i)
.Select(i => $"Number: {i.Key} Count: {i.Count()}"))
关于c# - 将IEnumerator的元素获取到列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51080148/