朋友我创建了一本字典。为了获得我在代码下面使用的前2个元素。
topKeys[B] = (from entry in differentKeys orderby entry.Value descending
select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value).Take(2)
.ToDictionary(x=>x.Key,x=>x.Value).Values.ToArray();
但似乎没有用。你能否在C#中建议哪一行能让我回到最高2位? differentKeys是我的字典的名称。检查下面的按扣......
答案 0 :(得分:3)
目前尚不清楚为什么要一直转换为词典。条目Dictionary<,>
的顺序无法保证。
看起来你只是想要:
var topValues = differentKeys.Values
.OrderByDescending(x => x)
.Take(2)
.ToArray();
或者,如果您想要与顶部值对应的键:
var keysForTopValues = differentKeys.OrderByDescending(x => x.Value)
.Select(x => x.Key)
.Take(2)
.ToArray();
答案 1 :(得分:1)
不确定您的预期输出和实际输出是多少,但您似乎想要从词典中获得前2名。
Dictionary<string, string> sample = new Dictionary<string, string>();
sample.Add("First", "Yasser");
sample.Add("Second", "Amit");
sample.Add("Third", "Sachin");
sample.Add("Fourth", "Kunal");
Dictionary<string, string> top2 = sample.Take(2).ToDictionary(m => m.Key, m => m.Value);
更新:刚刚注意到您的代码中使用了“降序”。
如果你想对按键使用这个
进行排序sample.OrderByDescending(m => m.Key).Take(2)
答案 2 :(得分:0)
你不应该一直转换成词典,differentKeys
到底是什么类型的?我在这里假设它是某种IEnumerable<T>
。如果differentKeys
是IDictionary<K,V>
,请使用Jon的答案,即使用Values
属性进行值集合,而不是通过Linq选择它们。
topKeys[B] = (from entry in differentKeys orderby entry.Value descending
select entry.Value)
.Take(2)
.ToArray();