2011-03-10 84 views
0

在C#中,我有一个Dictionary对象,它存储一个整数值和一个十进制值。如何使用Dictionary对象做“Group by”?

Dictionary<decimal,int> objDict = new Dictionary<decimal,int>(); 

和值

12 1 
    23 1 
    14 1 
    6 2 
    9 2 
    16 3 
    -4 3 

我想通过这个使用LINQ做一组,这样我会得到最大的价值。预期的输出是

23 1 
    9 2 
    16 3 

如何做到这一点?

+0

是否试着通过或最多做一组? – msarchet 2011-03-10 15:08:34

+0

最大。按第一列分组 – Shyju 2011-03-10 15:10:19

+7

“Dictionary”不允许重复键,因此您的描述看起来不准确。它究竟是什么类型的对象?也许你可以告诉我们如何用一些代码设置这个对象。 – 2011-03-10 15:10:59

回答

3
var query = yourDictionary.GroupBy(x => x.Value, 
            (k, g) => new { 
                Max = g.Max(x => x.Key), 
                Value = k 
               }); 
0
var itemCount2NumberMap = yourDictionary.GroupBy(item=>item.Value).ToDictionary(x=>x.Key, x=>x.Max(y=>y.Key));