C# 字典获取具有最高值和键的项

C# 字典获取具有最高值和键的项,c#,dictionary,C#,Dictionary,在我的字典(int,int)中,我试图得到一个值为3且最大的键。 如果我想获得值为3的密钥,我可以使用以下代码: var max = double_list.FirstOrDefault(x => x.Value == 3).Key; 但是,如果我的字典包含多个值为3的项,我会得到第一个值为3的项(请参见“FirstOrDefault”),我真正想要的是,当有多个值为3的项时,我会按它们的键比较这些项,并得到具有最高键的项 例如: |键值 | 12 | 3 | 13 | 2 |

在我的字典(int,int)中,我试图得到一个值为3且最大的键。 如果我想获得值为3的密钥,我可以使用以下代码:

var max = double_list.FirstOrDefault(x => x.Value == 3).Key;
但是,如果我的字典包含多个值为3的项,我会得到第一个值为3的项(请参见“FirstOrDefault”),我真正想要的是,当有多个值为3的项时,我会按它们的键比较这些项,并得到具有最高键的项

例如: |键值 | 12 | 3 | 13 | 2 | 18 | 3
我想得到18分,而不是12分。我希望你能理解我的问题是什么。对不起,我的英语不好,任何输入是高度赞赏的

只需在查询中插入
OrderByDescending

var max = double_list
  .OrderByDescending(x => x.Value == 3)
  .FirstOrDefault().Key;

只需在查询中插入
OrderByDescending

var max = double_list
  .OrderByDescending(x => x.Value == 3)
  .FirstOrDefault().Key;

最简单的方法就是使用:

如果您想获得的不仅仅是最高的键,您可以使用以下方法:

var topTwo = dictionary.Where(x => x.Value == 3)
                       .Select(x => x.Key)
                       .OrderByDescending(x => x)
                       .Take(2);

但是,如果您只需要最高的单键,我肯定会使用
Max

最简单的方法就是使用:

如果您想获得的不仅仅是最高的键,您可以使用以下方法:

var topTwo = dictionary.Where(x => x.Value == 3)
                       .Select(x => x.Key)
                       .OrderByDescending(x => x)
                       .Take(2);

但是如果您只需要最高的单键,我肯定会使用
Max

var Max=double\u list.Where(x=>x.Value==3&&x.key==double\u list.Max(item=?item.key));var max=double_list.Where(x=>x.Value==3&&x.Key==double_list.max(item=?item.Key));没有必要使用完整的订单;我们只需要最大值。此外,您现在按布尔值排序,与键无关……这是一个很好的观点。顺序是突然想到的,但是使用Max是一个更好的解决方案;我们只需要最大值。此外,您现在按布尔值排序,与键无关……这是一个很好的观点。订单是我突然想到的,但使用Max是一个更好的解决方案。它在这种情况下有效,但如果我还想得到第二好的商品呢。假设我的字典有10个条目,3个条目的值为3,现在我想从这3个条目中得到键最高的两个条目。您是否有任何通用代码用于此目的?@user3868224:在这种情况下,您将使用
Select
OrderByDescending
Take
。但这是另一个问题。。。我会将此编辑到答案中,但请在以后询问您真正想要什么,而不仅仅是一个过于简化的版本。在这种情况下,它是有效的,但如果我也想得到第二好的项目呢。假设我的字典有10个条目,3个条目的值为3,现在我想从这3个条目中得到键最高的两个条目。您是否有任何通用代码用于此目的?@user3868224:在这种情况下,您将使用
Select
OrderByDescending
Take
。但这是另一个问题。。。我会将此编辑到答案中,但请在将来询问您真正想要什么,而不仅仅是一个过于简化的版本。