【问题标题】:Get N max numbers from a List<int> using lambda expression使用 lambda 表达式从 List<int> 中获取 N 个最大数
【发布时间】:2012-02-22 03:29:58
【问题描述】:

这是我的清单:

List<int> numbers=new List<int> { 12, 5, -8, 4, 7, 28, 3, 22 };

如何通过 lambda 获得 4 个最大数字:我需要这些:{28, 22, 12, 7}

【问题讨论】:

    标签: c# .net linq sorting lambda


    【解决方案1】:

    用途:

    var result = numbers.OrderByDescending(n => n).Take(4);
    

    【讨论】:

    • 请注意,对于更大的列表,最好不要对其进行排序,而是遍历列表一次并跟踪遇到的四个最大整数。
    • Ins't linq 懒惰,所以它会做优化,因为它知道你只想要 4 个?
    • 您需要先对数字进行排序才能知道 哪个 4 - OrderBy 将始终完全枚举来源
    • @Aphelion Linq-to-SQL 被延迟/延迟执行。 Linq-to-Objects 可能不是,通常也不是。
    • @kirill Polishchuk:如果我们需要保持我们最大数量的原始位置(索引)怎么办?
    猜你喜欢
    • 2017-05-31
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多