使用OrderBy对列表进行排序

ROL*_*ROL 14 c# linq

为什么以下代码不会对我的列表进行排序?

List<string> lst = new List<string>() { "bac", "abc", "cab" };
lst.OrderBy(p => p.Substring(0));
Run Code Online (Sandbox Code Playgroud)

sca*_*man 25

因为OrderBy返回IOrderedEnumerable,你应该这样做:

lst = lst.OrderBy(p => p.Substring(0)).ToList();
Run Code Online (Sandbox Code Playgroud)

你也可以做以下事情:

lst.Sort();
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`List&lt;T&gt;.Sort` 是一种不稳定的排序,而 OrderBy 是稳定的。当然,在这种情况下,排序 * 仅 * 按第一个字母,而使用不带任何参数的 `list.Sort` 将按整个字符串排序。 (2认同)

Ste*_*ung 16

您将LINQ操作与更改其应用的变量的方法(即对象的实例方法)混淆.

LINQ操作(即.OrderBy)返回一个查询.它不会对您的对象执行操作(即lst).

您需要将该查询的结果分配回您的变量:

lst = lst.OrderBy(p => p).ToList();
Run Code Online (Sandbox Code Playgroud)

在LINQ lingo.