1

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

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

var sorted = (从数组中的数字按数字升序选择数字).ToArray();

所以我把它排序在“排序”数组中。

我怎样才能返回其中小于 X 的所有数字。

4

2 回答 2

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(); 

LINQ 扩展方法的顺序不影响性能?(标题具有误导性,实际上OrderBy是 E.Lippert 在他的回答中解释的顺序很重要的例外情况之一)

于 2013-02-11T11:04:14.230 回答
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);

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

于 2013-02-11T11:04:07.303 回答