我有一本詞典,我想找到具有最高價值的關鍵詞。如何在c#字典中找到具有最高值的密鑰?
例如,如果我有
Key | Value
a | 1
b | 2
c | 3
我會想返回℃。
我現在有這個,但它只搜索最高值,我不知道如何返回密鑰。
var max = occurrences.Max(x => x.Value);
我有一本詞典,我想找到具有最高價值的關鍵詞。如何在c#字典中找到具有最高值的密鑰?
例如,如果我有
Key | Value
a | 1
b | 2
c | 3
我會想返回℃。
我現在有這個,但它只搜索最高值,我不知道如何返回密鑰。
var max = occurrences.Max(x => x.Value);
var maxKey = occurrences.OrderByDescending(x => x.Value).First().Key;
您需要包括MoreLinq
和使用MaxBy
var result = occurrences.MaxBy(kvp => kvp.Value).Key;
下面是一些可以使用的方法。
使用LINQ如下:
var max = myDictionary.Aggregate((l, r) => l.Value > r.Value ? l : r).Key;
使用LINQ,你可以先找出最大的值,那麼尋找它:
var maxValue = myDictionary.Values.Max();
var max = myDictionary.Where(pair => maxValue.Equals(pair.Value)) .Select(pair => pair.Key);
或者這樣:
var max = from x in myDictionary where x.Value == myDictionary.Max(v => v.Value) select x.Key;
解決我的朋友 –
var dict = new Dictionary<string,int>();
dict.Add("a",1);
dict.Add("b",2);
dict.Add("c",3);
var max= dict.OrderByDescending(x => x.Value).FirstOrDefault();
記得檢查max是否爲空。
此處還有一個解決方案,考慮字典中是否存在多個具有最大值的鍵?
Dictionary<char, int> dic = new Dictionary<char, int>();
dic.Add('a', 1);
dic.Add('b', 2);
dic.Add('c', 3);
dic.Add('d', 3);
var maxValue = (int)dic.Max(i => i.Value);
List<char> maxKeys = dic.Where(i => i.Value == maxValue).Select(i => i.Key).ToList();
這太棒了! MoreLinq聽起來很酷!我不知道這件事。打的好! – DDan
我也不知道有一個庫MoreLinq。有用的信息 –