首页 新闻 会员 周边 捐助

linq OrderBy()

0
悬赏园豆:10 [已解决问题] 解决于 2013-04-12 13:30

一个小问题。一个 简单 正整数 数组numbers

numbers.OrderBy(n=>n),这个是按大小升序排序,我想着那降序应该是numbers.OrderBy(n=>1/n)这个,不过不行,这个是按什么排的?还有降序该怎么排?

刚学,对Lambda表达式不太了解。。

问题补充:

现在知道原因了,当时没想到:

我定义数组用的是:int[] numbers = { 1, 1, 2, 3, 5, 8, 13, 21 };

因为是int型,这个数组的元素1/n大多都会变成0,导致排序错乱。

如果是double型,1/n可以对这个数列排序。

kafka No.14的主页 kafka No.14 | 初学一级 | 园豆:122
提问于:2013-04-11 14:37
< >
分享
最佳答案
0

降序用 OrderByDescending

收获园豆:10
geass.. | 小虾三级 |园豆:1821 | 2013-04-11 15:26

哦,好。谢谢。这个1/n不也是把大的变小,小的变大么?

kafka No.14 | 园豆:122 (初学一级) | 2013-04-11 15:33

@Rakanishu5: 字符,日期 类型 也能这样搞?

geass.. | 园豆:1821 (小虾三级) | 2013-04-11 17:31

@geass..: 就是一个简单的正整数数列。。。

kafka No.14 | 园豆:122 (初学一级) | 2013-04-11 17:38
其他回答(3)
0

你不能在Lambda表达式中运算,比如 (n=>1/n),这样不合法。

jerry-Tom | 园豆:4077 (老鸟四级) | 2013-04-11 17:01

貌似也能这么写,不过不知道它到底是怎么排序的。比如:

int[] numbers = { 1, 1, 2, 3, 5, 8, 13, 21 };
var query = numbers.OrderBy(n => (1 / n));
foreach (int i in query) Console.Write("{0} ", i);

这几句输出是:2,3,5,8,13,21,1,1

确实也重新排序了一下。。规则不明。。

支持(0) 反对(0) kafka No.14 | 园豆:122 (初学一级) | 2013-04-11 17:49
0

173844862.Net高级部落

辛巴 | 园豆:622 (小虾三级) | 2013-04-12 08:23
0

倒序也可以 numbers.OrderBy(n=>n * -1)

gunsmoke | 园豆:3592 (老鸟四级) | 2013-04-12 11:30

嗯,是的,谢谢。

支持(0) 反对(0) kafka No.14 | 园豆:122 (初学一级) | 2013-04-12 13:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册