说我有以下列表:
List<int> list = new List<int>() { 5, 5, 6, 6, 6, 7, 7, 7, 7 };
如何将列表转换为Dictionary,其中值是使用LINQ列表中每个不同数字的计数?例如,上面的列表应该转换为包含以下元素的字典:
键 - &gt;值
5 - &gt; 2
6 - &gt; 3
7 - &gt; 4
答案 0 :(得分:10)
var result = list.GroupBy(i => i).ToDictionary(g => g.Key, g => g.Count());
答案 1 :(得分:2)
Efficent解决方案(仅收集1次迭代):
var output = new Dictionary<int, int>();
foreach (var val in list)
{
if (!output.ContainsKey(val))
{
output.Add(val, 1);
}
else
{
output[val] = output[val] + 1;
}
}
答案 2 :(得分:1)
var group = list.GroupBy(T => T).ToDictionary(T => T.Key, T => T.Count())
答案 3 :(得分:1)
试试这个:
var dic = list.GroupBy(c => c)
.Select(c => new {c.Key, Count = c.Count()})
.ToDictonary(c => c.Key, q => q.Count)