对数组进行排序并返回小于X的所有数字

时间:2013-02-11 10:59:52

标签: linq

使用linq,如何对数组进行排序,然后返回所有小于X

的数字

对于排序我使用:(这是一个好方法吗?)

  

var sorted =(从数字顺序中的数字乘以数字升序选择数字).ToArray();

所以我按照排序'排序'阵列。

如何返回小于X的所有数字。

2 个答案:

答案 0 :(得分:2)

为什么要在过滤之前对进行排序?这比首先过滤并订购其余的效率低:

var sorted = array.Where(i => i < x).OrderBy(i => i).ToArray(); 

或查询语法:

var sorted = (from i in array
              where i < x
              orderby i
              select i).ToArray(); 

Order of LINQ extension methods does not affect performance?(标题具有误导性,实际上OrderBy是订单重要的例外情况之一,如E.Lippert在其答案中所述)

答案 1 :(得分:1)

var result = from n in array
             where n < value
             orderby n
             select n;

或者在方法语法中:

var result = array.Where(n => n < value).OrderBy(n => n);

如果您已经有排序数组

,也可以使用TakeWhile
var result = sortedArray.TakeWhile(n => n < value);

请记住,最好在排序前过滤序列。为什么?因为当您进行排序时,所有项目都存储在内部排序结构中。因此,您需要排序的项目越少,代码工作的速度就越快(并且使用的内存就越少)。