一个小问题。一个 简单 正整数 数组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可以对这个数列排序。
降序用 OrderByDescending
哦,好。谢谢。这个1/n不也是把大的变小,小的变大么?
@Rakanishu5: 字符,日期 类型 也能这样搞?
@geass..: 就是一个简单的正整数数列。。。
你不能在Lambda表达式中运算,比如 (n=>1/n),这样不合法。
貌似也能这么写,不过不知道它到底是怎么排序的。比如:
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
确实也重新排序了一下。。规则不明。。
173844862.Net高级部落
倒序也可以 numbers.OrderBy(n=>n * -1)
嗯,是的,谢谢。