使用LINQ删除字典中的重复项以及这些重复项的计数

Rob*_*ert 4 c# linq

我有一些代码返回我的字典中的唯一元素,但我还想返回重复元素的计数.基本上将字典[key,uniqueelement]更改为字典[uniqueelement,count].这是我的代码,只返回唯一元素.

var uniqueItems = deviceInstances.Children.GroupBy(pair => pair.Value.Information.UnderlyingDeviceType)
                  .Select(group => group.First())
                  .ToDictionary(pair => pair.Key, pair => pair.Value.Information.UnderlyingDeviceType.ToString());
Run Code Online (Sandbox Code Playgroud)

Ant*_*ram 6

基于你已有的

var uniqueItems = deviceInstances.Children.GroupBy(pair => pair.Value.Information.UnderlyingDeviceType) 
                  .Select(group => new { Pair = group.First(), Count = group.Count() }) 
                  .ToDictionary(g => g.Pair.Value.Information.UnderlyingDeviceType.ToString(), g => g.Count); 
Run Code Online (Sandbox Code Playgroud)

基于此演示

Dictionary<int, string> dictionary = new Dictionary<int, string>();
dictionary.Add(1, "Alpha");
dictionary.Add(2, "Bravo");
dictionary.Add(3, "Charlie");
dictionary.Add(4, "Alpha");
dictionary.Add(5, "Bravo");
dictionary.Add(6, "Alpha");

var uniqueItems = dictionary
    .GroupBy(kvp => kvp.Value)
    .Select(g => new { g.Key, Count = g.Count() })
    .ToDictionary(g => g.Key, g => g.Count);

foreach (var kvp in uniqueItems)
{
    Console.WriteLine("{0}\t{1}", kvp.Key, kvp.Value);
}
Run Code Online (Sandbox Code Playgroud)