我有一個字符串如何使用Linq對二維數組進行排序?
string [] [] myArray;
的二維數組,我想其中的一列進行排序的。
所以數據可能
{ "Apple", "2", "Bob" },
{ "Banana", "1", "Fred" }
而且我想任何這些列的排序它 - 我有一個索引。
理想情況下,我想這樣做myArray.Sort(1);
我明白我可能要使用自定義比較。我認爲這是一個有趣的學習機會。任何人都可以提供建議嗎?
我有一個字符串如何使用Linq對二維數組進行排序?
string [] [] myArray;
的二維數組,我想其中的一列進行排序的。
所以數據可能
{ "Apple", "2", "Bob" },
{ "Banana", "1", "Fred" }
而且我想任何這些列的排序它 - 我有一個索引。
理想情況下,我想這樣做myArray.Sort(1);
我明白我可能要使用自定義比較。我認爲這是一個有趣的學習機會。任何人都可以提供建議嗎?
你可以做這樣的...
IEnumerable<T> AsEnumerable(this T[,] arr) {
for(int i = 0; i < arr.GetLength(0); i++)
for(int j = 0; j < arr.GetLength(1); j++)
yield return arr[i, j];
}
,然後寫例如:
int[,] data = // get data somwhere
// After 'AsEnumerable' you can use all standard LINQ operations
var res = data.AsEnumerable().OrderBy(n => n).Reverse();
Array.Sort(myArray, (p, q) => p[0].CompareTo(q[0]));
這將在下達的指令陣列(所以在最後myArray
將被排序)。 LINQ OrderBy
通過比較創建一個新的有序枚舉,然後您可以將其轉換爲ToArray
。
謝謝,這是有用的知道 – NibblyPig
你怎麼能有這些字符串的2d鋸齒陣列?他們似乎是3字段(其中1是整數) – xanatos
它是一個數組數組... ...所以myArray [0] = [「Apple」,「2」,「Bob」];即myArray [0,0]是Apple,0,1是「2」等。 – NibblyPig
Ah ... 2是一個字符串:-) – xanatos