获取列表中的最大 KeyValuePair<KeyValuePair>

Wal*_*oni 3 c# linq list max

我有一个List<KeyValuePair<int, string>>。我想知道谁KeyValuePair<int, string>拥有最大的Key

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

我能够做到这一点:

int myValue  = myListe.Max(t => t.Key);
Run Code Online (Sandbox Code Playgroud)

但它返回键...而不是值:(

我怎样才能做到这一点?

Mar*_*ell 5

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

var pair = myList.OrderByDescending(x => x.Key).First();
Run Code Online (Sandbox Code Playgroud)

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

MoreLINQ一个合适的MaxBy方法,它允许:

var pair = myList.MaxBy(x => x.Key);
Run Code Online (Sandbox Code Playgroud)

  • @codroipo 性能;`OrderBy[降序]` 最终是一个排序操作,并且相对昂贵 - 例如 O(n log(n)) - 与单遍“maxby”的 O(n) 相反 (2认同)