使用LINQ的所有电话号码,我怎样才能数组排序和回归后更小巧的所有号码,则X数组排序并返回较小,那么X
对于排序我使用:(这是一个好的)
var sorted =(从数组中的数字orderby number ascending select number).ToArray();
所以我有它排序在'排序'数组。
我怎样才能返回它更小巧然后X.
使用LINQ的所有电话号码,我怎样才能数组排序和回归后更小巧的所有号码,则X数组排序并返回较小,那么X
对于排序我使用:(这是一个好的)
var sorted =(从数组中的数字orderby number ascending select number).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();
Order of LINQ extension methods does not affect performance?(标题有误导之嫌,其实OrderBy
是例外情况的顺序问题之一正如E.Lippert在他的回答中所解释的那样)
如何测量这种方法的复杂性? – 2013-02-11 11:13:32
@ slash1z:我假设它是** O(n)**,因为'Enumerable.Where'需要枚举数组以找到所有低于'x'的数字。剩下的将由具有** O(N log N)**复杂性的'Enumerable.OrderBy'命令。 – 2013-02-11 11:16:11
你可以建议如何看看这个'(从数字顺序中的数字降序选择数字).Distinct()',它是O(n)导致它正在通过数组中的每个值像一个简单的循环, Distinct()或Where()子句不会增加更多复杂性,对吧? – 2013-02-11 12:00:33
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);
请记住,最好在排序前过滤序列。为什么?因为当你排序时,所有项目都存储在内部的排序结构中。因此,您必须排序的项目越少,代码运行的速度就越快(并且使用更少的内存)。
。其中(x => x <...) – 2013-02-11 11:00:59
可以请您发帖吗?我是LINQ的新手。 – 2013-02-11 11:01:53
Tim Schmelter回答如下 – 2013-02-11 11:55:32