使用OrderBy对列表进行排序

时间:2011-03-14 07:47:04

标签: c# linq

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

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

3 个答案:

答案 0 :(得分:24)

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

lst = lst.OrderBy(p => p.Substring(0)).ToList();

您还可以执行以下操作:

lst.Sort();

答案 1 :(得分:15)

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

LINQ操作(即.OrderBy)返回查询对您的对象执行操作(即lst)。

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

lst = lst.OrderBy(p => p).ToList();

在LINQ lingo。

答案 2 :(得分:1)

string[] words = { "bac", "abc", "cab" };

var sortedWords = from w in words
                  orderby w
                  select w;

Console.WriteLine("The sorted list of words:");

foreach (var w in sortedWords)
{
    Console.WriteLine(w);
}