2
如果你有一個類似string [] []的數組,那麼假設前一個數組是矩形的(沒有鋸齒),將其轉換成一個常規的多維數組像string [,]的最聰明的方法是什麼?將[] []形式的數組轉換爲[,]的最明智的方法是什麼?
我能想到的唯一方法是獲取維度,用這些維度聲明多維數組,然後遍歷源數組並遍歷新數組。但我想知道是否有更簡單的解決方案。
如果你有一個類似string [] []的數組,那麼假設前一個數組是矩形的(沒有鋸齒),將其轉換成一個常規的多維數組像string [,]的最聰明的方法是什麼?將[] []形式的數組轉換爲[,]的最明智的方法是什麼?
我能想到的唯一方法是獲取維度,用這些維度聲明多維數組,然後遍歷源數組並遍歷新數組。但我想知道是否有更簡單的解決方案。
這只是爲了好玩:完全同意這是一個矯枉過正的行爲,最好的方式是正常的迭代。
//example jagged array
string[][] ja = new string[2][];
for (int i = 0; i < 2; i++)
ja[i] = Enumerable.Range(0, 3).Select(k => "Cell [" + i + "," + k + "]").ToArray();
//conversion to a 2D-array
string[,] ka = new[] { new string[ja.Length, ja[0].Length] }
.Select(_ => new { x = _, y = ja.Select((a, ia) => a.Select((b, ib) => _[ia, ib] = b).Count()).Count() })
.Select(_ => _.x)
.First();
//dump result
for (int i = 0; i < 2; i++)
for (int k = 0; k < 3; k++)
{
Console.WriteLine(ka[i, k]);
}
幾乎不可讀,但它工作(至少當所述初始數組不爲空/畸形)。
非常酷。感謝您的整潔解決方案。我同意,也許正常的迭代確實是最好的解決方案。正確答案。 – Dalal
您提出的解決方案有哪些問題?您的需求不足以滿足您的需求? – Servy
可能重複[轉換鋸齒陣列直接二維數組沒有迭代每個項目?](http://stackoverflow.com/questions/11438587/convert-a-jagged-array-to-a-2d-array-directly -without-iterating-each-item) – BartoszKP
此外,爲什麼你更喜歡'[[]]'在'[] []'上面?通常是相反的。 – SimpleVar