首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取list<KeyValuePair>上的最大KeyValuePair

获取list<KeyValuePair>上的最大KeyValuePair
EN

Stack Overflow用户
提问于 2016-06-17 17:58:01
回答 3查看 2.3K关注 0票数 3

我有一台List<KeyValuePair<int, string>>。我想知道拥有最大KeyKeyValuePair<int, string>

但是,我想要获取密钥的值。不仅仅是钥匙。

我可以这样做:

代码语言:javascript
复制
int myValue  = myListe.Max(t => t.Key);

但它会将值返回给key...not :(

我该怎么做呢?

EN

回答 3

Stack Overflow用户

发布于 2016-06-17 18:00:57

最简单(但不必要地昂贵)的方法是:

代码语言:javascript
复制
var pair = myList.OrderByDescending(x => x.Key).First();

然而,很容易编写一个定制的MaxBy扩展方法来完成相同的工作,而不需要对所有其他值进行排序。这是否重要取决于列表的大小和您的性能要求。

The MoreLINQ librarya suitable MaxBy method,这将允许:

代码语言:javascript
复制
var pair = myList.MaxBy(x => x.Key);
票数 4
EN

Stack Overflow用户

发布于 2016-06-17 18:06:32

除了Max之外,您还可以使用FirstOrDefaultFirst来选择所需的KeyValuePair

所以你可以这样写你的代码:

代码语言:javascript
复制
var list = new List<KeyValuePair<int, string>>();
list.Add(new KeyValuePair<int, string>(1, "a"));
list.Add(new KeyValuePair<int, string>(5, "b"));
list.Add(new KeyValuePair<int, string>(3, "c"));

var value = list.FirstOrDefault(x => x.Key == list.Max(y => y.Key));
票数 1
EN

Stack Overflow用户

发布于 2016-06-17 19:05:48

为了完整性,这种情况下的另一种有效方法是使用Aggregate方法:

代码语言:javascript
复制
var item  = myList.Aggregate((a, b) => a.Key < b.Key ? b : a);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37878588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档