2013-02-27 182 views
1

需要做這樣的事情在C#我在Java:排序使用比較清單列表

Double[][] matrix = new Double[3][4]; 

     matrix[0][0] = 100.0; 
     matrix[0][1] = -3.0; 
     matrix[0][2] = 50.0; 
     matrix[0][3] = 50.3; 

     matrix[1][0] = 1.2; 
     matrix[1][1] = 1.1; 
     matrix[1][2] = 0.9; 
     matrix[1][3] = 10000.0; 

     matrix[2][0] = 2.3; 
     matrix[2][1] = 2.35; 
     matrix[2][2] = 2.32; 
     matrix[2][3] = 2.299; 

     Arrays.sort(matrix, new Lexical()); 

我一直在尋找的MSDN文檔,但沒有方法來對列表進行排序,不有什麼要List<List<T>>

感謝

+0

什麼是排序後'matrix'您所需的佈局,爲什麼? – Rawling 2013-02-27 12:29:11

回答

2

豪爾赫。

一個更多鈔票溶液:

matrix.Sort(delegate(List<double> l1, List<double> l2) 
      { 
       return l1[0].CompareTo(l2[0]); 
      }); 

再見。

+0

太棒了,這是我所需要的。 – 2013-02-27 12:36:15

0

您可以實現自己的IComparer和排序,或者你還可以使用LINQ ssomething基本上會經過整個矩陣和排序,或者你可以把它變成另一種數據結構產品總數,有點像列表>,然後你可以輕鬆地排序。

或者是這樣的:

How do I sort a two-dimensional array in C#?

http://www.codeproject.com/Tips/166236/Sorting-a-two-dimensional-array-in-C

+0

Dutzu,謝謝你的回覆。這些例子和我正在觀看,但不是我需要的。只有我必須排序最外層。 問候 – 2013-02-27 12:24:14

0

您可以通過每個數組的第一個元素進行排序(如果這是你問):

var matrix = new double[][] { 
    new[] { 100.0, -3.0, 50.0, 50.3 }, 
    new[] { 1.2, 1.1, 0.9, 10000.0 }, 
    new[] { 2.3, 2.35, 2.32, 2.299} 
}; 

Array.Sort(matrix, (a, b) => a[0].CompareTo(b[0]));