使用 linq,如何对数组进行排序,然后返回所有小于 X 的数字
对于排序,我使用它:(这是一个好方法吗?)
var sorted = (从数组中的数字按数字升序选择数字).ToArray();
所以我把它排序在“排序”数组中。
我怎样才能返回其中小于 X 的所有数字。
使用 linq,如何对数组进行排序,然后返回所有小于 X 的数字
对于排序,我使用它:(这是一个好方法吗?)
var sorted = (从数组中的数字按数字升序选择数字).ToArray();
所以我把它排序在“排序”数组中。
我怎样才能返回其中小于 X 的所有数字。
为什么要在过滤之前进行排序?这比先过滤并排序其余部分效率低:
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();
LINQ 扩展方法的顺序不影响性能?(标题具有误导性,实际上OrderBy
是 E.Lippert 在他的回答中解释的顺序很重要的例外情况之一)
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);
请记住,最好在排序之前过滤序列。为什么?因为当您进行排序时,所有项目都存储在内部排序结构中。因此,您必须排序的项目越少,您的代码运行得越快(并且使用的内存越少)。