选择字典中键的最高值,该键中键值低于给定的键#34; at"值

时间:2014-05-13 11:17:41

标签: c# .net algorithm

有没有更好的方法来编写它,使用LINQ而不是自定义方法。 Sorted Dictionary不是一个选项。 我认为Dictionary.Where(x => x.Key< at)很好但是 .OrderBy(x => x.Key).Last()会很慢,因为我只需要一个值我浪费 用于订购的CPU。

Dictionary.Where(x => x.Key < at).OrderBy(x => x.Key).Last().Value;

也许:

Dictionary[Dictionary.Where(x => x.Key < at).Max(x => x.Key)];

2 个答案:

答案 0 :(得分:2)

Dictionary[Dictionary.Keys.Where(key=> key < at).Max()]

答案 1 :(得分:2)

第二种选择是好的。它首先找到max键,然后找到随之而来的Value。 或者,您可以编写MaxBy方法。 或者只使用已在MoreLinq中实现的那个: http://code.google.com/p/morelinq/