Linq使用Group BY查询前10名

时间:2012-06-26 14:54:07

标签: c# linq

  

可能重复:
  Linq - Top value form each group

我有以下结构的数据:

 var lookupDictionary = new Dictionary<string, Dictionary<string, double>>();

我尝试编写一个Linq查询,通过总结和排序降低内部字典中的双精度来从外部字典中获取前10个键。我对SQL中的group by有很好的把握,但很难将其转换为Linq。

任何可以证明此类查询的Linq专家?

2 个答案:

答案 0 :(得分:2)

你需要一个小组吗?

var top = lookupDictionary
    .Select(dict => new { dict.Key, InnerCount = dict.Value.Values.Sum() })
    .OrderByDescending(dict => dict.InnerCount)
    .Take(10);

答案 1 :(得分:1)

Dictionary<string, Dictionary<string, double>> lookupDictionary = new Dictionary<string, Dictionary<string, double>>();
lookupDictionary.Select(outerKeyPair => new
{
    Key = outerKeyPair.Key,
    Sum = outerKeyPair.Value.Values.Sum()
})
.OrderByDescending(pair => pair.Sum)
.Take(10);