使用linq,如何对数组进行排序,然后返回所有小于X
的数字对于排序我使用:(这是一个好方法吗?)
var sorted =(从数字顺序中的数字乘以数字升序选择数字).ToArray();
所以我按照排序'排序'阵列。
如何返回小于X的所有数字。
答案 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);
如果您已经有排序数组
,也可以使用TakeWhilevar result = sortedArray.TakeWhile(n => n < value);
请记住,最好在排序前过滤序列。为什么?因为当您进行排序时,所有项目都存储在内部排序结构中。因此,您需要排序的项目越少,代码工作的速度就越快(并且使用的内存就越少)。