c#dictionary获取最小值的关键字

Dez*_*ndo 13 c# linq dictionary

今天对你来说可能很简单,但我现在正在围成一圈.考虑这种情况:

var tempDictionary = new Dictionary<string, int>();
tempDictionary.Add("user 1", 5);
tempDictionary.Add("user 2", 3);
tempDictionary.Add("user 3", 5);

Console.WriteLine(tempDictionary.Min(x => x.Key) + " => " tempDictionary.Min(x => x.Value);
Run Code Online (Sandbox Code Playgroud)

以上返回"user 1 => 3".

你会如何在字典中以最低值返回密钥?我之后的输出看起来像这样:"user2 => 3"

有任何想法吗?

Saj*_*ran 25

使用morelinq

var keyR = tempDictionary.MinBy(kvp => kvp.Value).Key;
Run Code Online (Sandbox Code Playgroud)

要么

 var min = tempDictionary.Aggregate((l, r) => l.Value < r.Value ? l : r).Key;
Run Code Online (Sandbox Code Playgroud)

来自C#中字典的最高值


spe*_*der 6

var keyAndValue = tempDictionary.OrderBy(kvp => kvp.Value).First();
Console.WriteLine("{0} => {1}", keyAndValue.Key, keyAndValue.Value);
Run Code Online (Sandbox Code Playgroud)

如果数据集的大小是不平凡的,你可能会考虑在MinBy扩展moreLinq.这是 SO上托管的实现.