如何在c#字典中找到具有最高价值的密钥?

时间:2017-05-12 06:18:11

标签: c# dictionary

我有一个字典,我想找到具有最高价值的密钥。

例如,如果我有

Key  |  Value
a    |   1
b    |   2
c    |   3

我希望c能够被退回。

我现在有这个,但它只搜索最高值,我不知道如何返回密钥。

var max = occurrences.Max(x => x.Value);

4 个答案:

答案 0 :(得分:8)

var maxKey = occurrences.OrderByDescending(x => x.Value).First().Key;

答案 1 :(得分:5)

您需要包含 MoreLinq 并使用 MaxBy

var result = occurrences.MaxBy(kvp => kvp.Value).Key;

答案 2 :(得分:0)

m_Id |  m_Mobile |  m_ReceiveFromBranch
________________________________________
1       12345       1
2       12345       5
3       12345       1   //->Duplicate of m_Id 1
4       99999       1
5       88888       2
6       88888       5
7       88888       2   //->Duplicate of m_Id 5

请记住检查max是否为空。

答案 3 :(得分:0)

这里有一个解决方案,考虑字典中是否有多个具有最大值的键?

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();