Нет простого способа сделать это, потому что в описываемой ситуации нет ничего, что мешало бы массивам double[]
в списке иметь разные размеры, что было бы несовместимо с двумерным прямоугольным массивом.Однако, если вы в состоянии гарантировать, что все массивы double[]
имеют одинаковую размерность, вы можете создать свой двумерный массив следующим образом:
var arr = new double[ret.Count(),ret[0].Count()];
for( int i=0; i<ret.Count(); i++ ) {
for( int j=0; j<ret[i].Count(); j++ )
arr[i,j] = ret[i][j];
}
Это приведет к ошибке времени выполнения, еслилюбой из double[]
массивов в списке короче первого, и вы потеряете данные, если какой-либо из массивов будет больше первого.
Если вы действительно решили сохранить массив с неровностямив прямоугольном массиве вы можете использовать «магическое» значение, чтобы указать, что в этой позиции нет значения.Например:
var arr = new double[ret.Count(),ret.Max(x=>x.Count())];
for( int i=0; i<ret.Count(); i++ ) {
for( int j=0; j<arr.GetLength(1); j++ )
arr[i,j] = j<ret[i].Count() ? ret[i][j] : Double.NaN;
}
В редакционной заметке я думаю, что это очень плохая идея ™;когда вы собираетесь использовать прямоугольный массив, вы должны постоянно проверять Double.NaN
.Кроме того, что если вы хотите использовать Double.NaN
в качестве допустимого значения в массиве?Если у вас есть зубчатый массив, вы должны просто оставить его как зубчатый массив.