其他的答案被訂購初步名單,然後排序組。這是有效的,因爲GroupBy保留了初始集合的順序。不過,如果你想實際訂購組(這是原來的問題),要由IGrouping對象的重點首先創建組,然後順序:
[Test]
public void Test()
{
var collection = new List<Fake>()
{
new Fake {Value = "c"},
new Fake {Value = "b"},
new Fake {Value = "a"},
new Fake {Value = "a"}
};
var result =
collection.GroupBy(a => a.Value, a => a).OrderBy(b => b.Key).ToList();
foreach(var group in result)
{
Console.WriteLine(group.Key);
}
}
private class Fake
{
public string Value { get; set; }
}
使用查詢語法,這看起來像這樣:
var result =
from a in collection
group a by a.Value
into b
orderby b.Key
select b;
我們再次手術手術從事羣體訂單之前,和該組實際執行的順序,而不是原來的列表元素。
+1我喜歡你的'collection.GroupBy'表達式解決方案。 – 2010-06-15 18:17:34
按鍵排序似乎沒有按字母排序數據... 它通過Id訂購它 – sooprise 2010-06-15 18:22:01
@Soo - 我不確定你的意思。當我運行上面的代碼時,我看到:控制檯上的「a b c」(單獨行)。我相信代碼正確地命令返回的「結果」集合中的組。你看到不同的東西嗎?你可以發佈一個更完整的代碼示例來解釋你的問題嗎? – 2010-06-15 18:26:50