Se la matrice monodimensionale contiene i dati primitivi in row major order e la capacità totale dell'array bidimensionale è uguale alla lunghezza della matrice monodimensionale, è possibile utilizzarla.
int[] source = new int[6];
int[,] target = new int[3, 2];
Buffer.BlockCopy(source, 0, target, 0, source.Length * sizeof(int));
noti che diversamente Array.Copy
e altri metodi matrice/lista, Buffer.BlockCopy
opera su un numero di byte di dati, anche se ogni elemento della matrice è maggiore di 1 byte. Funziona anche solo su matrici di tipi di dati primitivi.
Ulteriori riferimenti:
Edit: Ecco una prova di unità completa.
[TestMethod]
public void SOTest()
{
int[] source = new int[6] { 1, 2, 3, 4, 5, 6 };
int[,] destination = new int[3, 2];
Buffer.BlockCopy(source, 0, destination, 0, source.Length * sizeof(int));
Assert.AreEqual(destination[0, 0], 1);
Assert.AreEqual(destination[0, 1], 2);
Assert.AreEqual(destination[1, 0], 3);
Assert.AreEqual(destination[1, 1], 4);
Assert.AreEqual(destination[2, 0], 5);
Assert.AreEqual(destination[2, 1], 6);
}
Cosa per '{1,2,3,4,5,6,8,9,10,11,12}'? '{{1,2,3,4}, {5,6,7,8}, {9,10,11,12}' o '{{1,2,3}, {4,5,6} , {7,8,9}, {10,11,12}} ' – I4V
Avrai sempre una lunghezza uguale? La tupla sarà sempre una coppia? Controlla http://www.dotnetperls.com/tuple per vedere se questo ti aiuta a definire meglio la tua domanda. – AdamV
Per un singolo array di colonne in un array a due colonne si presume, come indicato nella sua domanda. – Zeddy