我有一个我想订购的号码列表。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
如果我这样做,它可以正常工作
.OrderBy(n => n)
只是为了它,我试过
.OrderBy(n => "ASC")
它不起作用,但它没有抛出错误。如果我将鼠标悬停在OrderBy上,则intellisense会显示,
IOrderedEnumerable<int> IEnumerable<int>.OrderBy<int,string>(Func<int,string> keySelector)
好奇,为什么?
感谢。
答案 0 :(得分:4)
不会抛出错误。您要告诉它使用"ASC"
进行比较,它就是这样做的。
答案 1 :(得分:1)
此方法使用默认比较器比较键。每个元素的关键是“ASC”。不违法。
答案 2 :(得分:0)
正如其他人所说,这是因为这是完全合法的。你也可以这样做:
Enumerable.Range(0,20).OrderBy(x=>x.ToString());
你会按字母顺序排列整数。
0
1
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
答案 3 :(得分:0)
你要说的是按一些值对对象进行排序,其中每个要排序的值都是通过每个对象获得的;通常这将是该对象的属性或功能。您可以将其视为数据库或电子表格中的“列”。
例如:
var employeesByName = Employees.OrderBy(employee => employee.Name);
提供按名称值排序的可枚举员工对象。如果你是这样做的话:
var employeesByConstant = Employees.OrderBy(employee => "ASC");
然后您将获得一个由“列”排序的可枚举员工对象,其中所有值都是“ASC”。根据使用的排序算法,这可能没有任何影响,或者有些任意顺序。
答案 4 :(得分:0)
它有效,但它不能按你的意愿工作,因为你使用&#34; ASC&#34;进行比较。
如果您想订购号码,请使用:
.OrderBy(i => i);
.OrderByDescending(i => i);