我需要从List<KeyValuePair<Int, Int>>依赖于最小值的列表中获取Kvp .
我试过这个:
KeyValuePair<Int, Int> kvp= listOfKvps.Min(e=> e.Key);
Run Code Online (Sandbox Code Playgroud)
但这只返回了价值,而不是KeyValuePair我需要的全部价值.
var min = listOfKvps.OrderBy(kvp => kvp.Key).First();
Run Code Online (Sandbox Code Playgroud)
如果你想通过序列中的单个O(n)传递,而不是要求O(n log n)排序,那么你可以这样做:
var min = listOfKvps.Aggregate((agg, kvp) => (kvp.Key < agg.Key) ? kvp : agg);
Run Code Online (Sandbox Code Playgroud)
(当然,第二个版本的可读性/直觉性远远低于第一个版本,即使它确实具有更好的理论性能.使用某种MinBy方法会更有意义:要么自己编写,请使用Marc的答案或使用MoreLINQ的版本.)
| 归档时间: |
|
| 查看次数: |
4590 次 |
| 最近记录: |