1

我有一个我想订购的号码列表。

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

如果我这样做,效果很好

.OrderBy(n => n)

只是为了它,我试过了

.OrderBy(n => "ASC")

它没有用,但它没有抛出错误。如果我将鼠标悬停在 OrderBy 上,智能感知会显示,

IOrderedEnumerable<int> IEnumerable<int>.OrderBy<int,string>(Func<int,string> keySelector)

只是好奇,这是为什么呢?

谢谢。

4

5 回答 5

4

它不会抛出错误。你告诉它比较 using "ASC",它就是这样做的。

于 2012-08-04T23:59:18.433 回答
1

此方法使用默认比较器比较键。每个元素的键是“ASC”。不违法。

于 2012-08-05T00:01:57.957 回答
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
于 2012-08-05T00:16:27.443 回答
0

您是说按某个值对对象进行排序,其中要排序的每个值都是通过每个对象获得的;通常这将是该对象的属性或功能。您可以将其视为数据库或电子表格中的“列”。

前任:

var employeesByName = Employees.OrderBy(employee => employee.Name);

给出按名称值排序的雇员对象的可枚举. 如果您改为这样做:

var employeesByConstant = Employees.OrderBy(employee => "ASC");

那么您将获得一个可枚举的员工对象,这些对象按“列”排序,其中所有值都是“ASC”。根据使用的排序算法,这可能没有效果,或者一些任意排序。

于 2012-08-05T00:18:55.840 回答
0

它可以工作,但不能按您的意愿工作,因为您使用“ASC”进行比较。

如果您想订购号码,请使用:
.OrderBy(i => i);
.OrderByDescending(i => i);

于 2012-08-05T06:46:57.973 回答