私は辞書を持っており、最高の価値を持つ鍵を見つけたいと思っています。C#ディクショナリで最高の値を持つキーを見つける方法は?
私は
Key | Value
a | 1
b | 2
c | 3
があった場合たとえば、私は、cが返されるとよいでしょう。
私は現時点でこれを持っていますが、最高の値しか検索しません。キーを返す方法がわかりません。
var max = occurrences.Max(x => x.Value);
私は辞書を持っており、最高の価値を持つ鍵を見つけたいと思っています。C#ディクショナリで最高の値を持つキーを見つける方法は?
私は
Key | Value
a | 1
b | 2
c | 3
があった場合たとえば、私は、cが返されるとよいでしょう。
私は現時点でこれを持っていますが、最高の値しか検索しません。キーを返す方法がわかりません。
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;
を使用する必要があります。
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);
それとも、このように:
次のようにLINQを使用して
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がnullであることを確認してください。
また、辞書に最大値を持つ複数のキーがある場合は、次のような解決策がありますか?
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。わかりやすい –