为什么以下代码不会对我的列表进行排序?
List<string> lst = new List<string>() { "bac", "abc", "cab" };
lst.OrderBy(p => p.Substring(0));
答案 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);
}