使用LINQ

时间:2017-05-24 15:45:29

标签: c# linq dictionary

我的字典类型为<int, list<int>>。我正在尝试计算为该特定键重复的值实例数。

我试过

LINQquery = dict.SelectMany(keyvalues => keyvalues.Value.GroupBy(values => values).Select(values => new {key = keyvalues.Key, value = values.Key, count = values.Count(),votescasted = keyvalues.Value.Count}));
resultList = LINQquery.ToList();

通过这个LINQ我正在为我的字典中的每个唯一值创建一个新的列表条目。我最终在列表中有多个键条目。如何修改我的查询,以便我有一个结果列表,其中包含key,countvalue1,countofvalue2 ..,countofvalueN?

我的输入是dict {500,{25,26,25,25}} 用我的LINQ我得到一个列表 键= 500,值= 25,计数= 3 键= 500,值= 26,计数= 1

如何修改我的查询以便我的输出列表可以 键= 500,countof25 = 3,countof26 = 1。

1 个答案:

答案 0 :(得分:0)

我相信这会做你想要的:

var x = dict
    .Select(d => new { Key = d.Key, 
                       Counts = d.Value.GroupBy(v => v)
                                        .Select(g => 
                                             new { Value = g.Key, 
                                                   Count = g.Count() })});

然后我们可以添加:

x.Select(i => $"Key = {i.Key}, " + 
  String.Join(", ", i.Counts.Select(c => $"countof{c.Value}={c.Count}" ))).Dump();

我们得到:

Key = 500, countof25=3, countof26=1