2012-06-26 90 views
1

可能重复:
Linq - Top value form each groupLINQ查询的前10名与GROUP BY

我有以下结构数据:

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

我想写一个Linq查询,通过对内部字典中的双精度进行总结和排序,为我提供外部字典中的前10个键ionary。我很好地掌握了SQL中的group by,但很难将其转换为Linq。

任何可以演示此类查询的Linq专家?

+3

http://stackoverflow.com/questions/1575316/linq-top-value-form-each-group – paragy

+1

这将真正让事情更清晰,如果你可以给你的样品输入和预期输出的一个例子。 –

+0

另外,http://www.WhatHaveYouTried.com/ – cadrell0

回答

2

你需要一组吗?

var top = lookupDictionary 
    .Select(dict => new { dict.Key, InnerCount = dict.Value.Values.Sum() }) 
    .OrderByDescending(dict => dict.InnerCount) 
    .Take(10); 
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);