2014-09-22 70 views
1

我需要幫助按內部列表中的屬性對列表進行排序。C#列表的排序列表#

List<List<int>> Nota = new List<List<int>>(); 
Nota.Add(new List<int> { 0,1,3,4}); 
Nota.Add(new List<int> { 0,3,3,4}); 
Nota.Add(new List<int> { 0,2,3,4}); 

然後我希望通過在內部列表的第二個元素進行排序,所以結果應該是

{ 0,1,3,4} 
{ 0,2,3,4} 
{ 0,3,3,4} 

排序後..

我試圖

Nota.OrderByDescending(x => - x[1]); 

但沒有結果

感謝您的幫助!

+7

問題,這僅僅是沒有顯示通常不會很好的堆棧溢出收到效果的需要。相反,展示(代碼)到目前爲止已經嘗試解決問題以及當前遇到什麼問題以及具體的可回答的客觀問題。 – tnw 2014-09-22 18:01:23

+0

請發佈您的相關代碼,以便我們可以看到您的卡住地點。 – 2014-09-22 18:01:31

+0

你的第一個代碼塊不能編譯。你需要一個字符串列表,但你傳入整數。 – gunr2171 2014-09-22 18:02:31

回答

4

您可以使用List<T>.Sort

Nota.Sort((a,b) => a[1].CompareTo(b[1])); 
+0

究竟是a,b?我在比較什麼? – 2014-09-22 18:13:24

+0

@JoseMariadelaTorre這是列表中的2個元素。所以'a'和'b'是每一個「內部列表」 – 2014-09-22 18:14:19

+0

所以,這樣比較所有列表不僅僅是兩個元素? – 2014-09-22 18:16:39

0

雖然不是最好的方法Nota.OrderByDescending(x => - x[1]);會工作如果你拍攝的輸出。與Sort不同,OrderBy不就地排序列表,而是返回一個枚舉器,它將按照所需順序爲您提供項目。

因此,像這樣的工作:

Nota = Nota.OrderByDescending(x => - x[1]).ToList(); 

,或者更簡單地說

Nota = Nota.OrderBy(x => x[1]).ToList();