2016-04-08 40 views
2

我編程在C#和我現在有下面的2D陣列:如何將多維(2D)數組按行分隔爲多個1D數組?

int[,] results = {         
{ 4, 7, 9, 3, 8, 6, 4},         
{ 4, 8, 6, 4, 8, 5, 6},         
{ 7, 3, 9, 2, 2, 1, 8}  
}; 

我想創建一個循環或功能,輸出3個獨立的陣列,複製從每一行中的值。

例如輸出:

row1 = {4, 7, 9, 3, 8, 6, 4}  
row2 = {4, 8, 6, 4, 8, 5, 6} 

我已經能夠每行的值複製到一個單獨的字符串,然後寫在控制檯與這行代碼:

for (int a = 1; a < (rows+1); a++)     
{      
    for (int b = 1; b < (columns+1); b++)      
    {       
     scores = scores + " " + results[(a-1), (b-1)];      
    }      
    scores = "";     
} 
+0

可能的重複[如何複製一行va從二維數組變成一維數組?](http://stackoverflow.com/questions/797354/how-to-copy-a-row-of-values-from-a-2d-array-into-a- 1D陣列) –

回答

3

你需要從2D陣列轉換爲鋸齒狀陣列

int[,] array = { { 4, 7, 9, 3, 8, 6, 4}, 
        { 4, 8, 6, 4, 8, 5, 6}, 
        { 7, 3, 9, 2, 2, 1, 8} 
       };    

int[][] jagged = new int[array.GetLength(0)][]; 
for (int i = 0; i < array.GetLength(0); i++) 
{ 
    int[] row = new int[array.GetLength(1)]; 
    for (int j = 0; j < array.GetLength(1); j++) 
    { 
     row[j] = array[i, j]; 
    } 
    jagged[i] = row; 
} 

int[] row1 = jagged[0]; 
int[] row2 = jagged[1]; 
int[] row3 = jagged[2]; 

multidimensio納爾陣列和交錯數組:

//multidimensional array 
int[,] multi = { { 7, 2, 6, 1 }, { 3, 5, 4, 8 } }; 
//array of arrays (jagged array) 
int[][] jagged = new int[][] { new int[] { 7, 2, 6, 1 }, new int[] { 3, 5, 4, 8 } }; 
0

只是一塊使用JsonSoft蛋糕作爲

var json = JsonConvert.SerializeObject(results); 
int[][] arr = JsonConvert.DeserializeObject<int[][]>(json); 

int[] arr1 = arr[0]; 
int[] arr2 = arr[1]; 
int[] arr3 = arr[2]; 
1

LINQ變體:

var m0 = new int[,] { { 1, 2 }, { 3, 4 } }; 
var rows = Enumerable.Range(0, m0.GetLength(0)).Select(i => Enumerable.Range(0, m0.GetLength(1)).Select(j => m0[i, j])); 
foreach (var r in rows) Console.WriteLine(string.Join(" ", r)); 
Console.ReadLine(); 

一個 '更聰明' 的變體(flattern陣列,並且通過取N值):

var rows = m0.Cast<int>().Select((v, i) => new { i = i/m0.GetLength(1), v }).GroupBy(e => e.i).Select(g => g.Select(e => e.v));