Быстрый однострочник с использованием методов расширения Linq Cast
и ToArray
сделает свое дело.Я считаю, что Cast
просто берет каждый элемент в массиве (из всех измерений), приводит их к указанному типу и возвращает их в IEnumerable
(который ToArray
затем преобразуется в массив):
int[] oneDimensionalArray = twoDimensionalArray.Cast<int>().ToArray();
Другой способ сделать это - цикл foreach
, который будет перебирать оба измерения вашего двухмерного массива:
int index = 0;
foreach (var item in twoDimensionalArray)
{
oneDimensionalArray[index++] = item;
}
Пример кода:
var rnd = new Random();
var rowCount = 10;
var colCount = 10;
// Populate two dimensional array. You could also use this "double for loop" structure
// to read the multi-dimensional array and then populate the one dimensional array.
var twoD = new int[rowCount, colCount];
for (var row = 0; row < rowCount; row++)
{
for (var col = 0; col < colCount; col++)
{
twoD[row, col] = rnd.Next();
}
}
// Populate one dimensional array with a foreach loop. Use a separate
// hold the index value for the one dimentional array
var oneD = new int[rowCount * colCount];
var index = 0;
foreach (var item in twoD)
{
oneD[index++] = item;
}