C# 字典获取具有最高值和键的项
在我的字典(int,int)中,我试图得到一个值为3且最大的键。 如果我想获得值为3的密钥,我可以使用以下代码: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 |
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
。但这是另一个问题。。。我会将此编辑到答案中,但请在将来询问您真正想要什么,而不仅仅是一个过于简化的版本。