爲什麼下面的代碼不會對我的列表進行排序?使用OrderBy對列表進行排序
List<string> lst = new List<string>() { "bac", "abc", "cab" };
lst.OrderBy(p => p.Substring(0));
爲什麼下面的代碼不會對我的列表進行排序?使用OrderBy對列表進行排序
List<string> lst = new List<string>() { "bac", "abc", "cab" };
lst.OrderBy(p => p.Substring(0));
因爲排序依據返回IOrderedEnumerable你應該做的:
lst = lst.OrderBy(p => p.Substring(0)).ToList();
你也可以做到以下幾點:
lst.Sort();
你混淆了LINQ操作與改變的變量是一個方法應用於(即對象的實例方法)。
LINQ操作(即.OrderBy)返回查詢。它不對您的對象執行操作(即lst
)。
您需要在查詢的結果分配回你的變量:
在LINQ行話lst = lst.OrderBy(p => p).ToList();
。
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);
}
庫爾..simpleň完美 – 2011-03-14 07:49:16
注意'名單 .Sort'是一種不穩定的排序,而排序依據是穩定的。當然,在這種情況下,排序僅爲*第一個字母,而使用不帶任何參數的「list.Sort」將按整個字符串進行排序。 –
2011-03-14 07:56:36
Jon,'.Substring(0)'返回整個字符串,我相信...對於第一個字符,需要'.Substring(0,1)'或'[0]'... – 2011-03-14 08:09:39