通过从内部数组中提取1个元素,将<T> [] []转换为<T> []

rex*_*rex 0 c# arrays jagged-arrays multidimensional-array

是否有一个潜在的1衬里允许我从2D的内部数组的某个索引创建一个新的1维数组?

示例采用每个内部数组的第一个元素:

double[][] array2D = new double[10][] // with inner arrays say double[5]
double[] array1D = new double[10];

for (int i=0; i<array2D.Length; i++)
{
    array1D[i] = array2D[i][0];
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

我只是使用LINQ.这将不是"避免环路"在执行方面,但它会避免在一个循环源代码如下:

// 1dArray isn't a valid identifier...
var singleArray = jaggedArray.Select(x => x[0]).ToArray();
Run Code Online (Sandbox Code Playgroud)

请注意,这依赖于它是一个锯齿状数组(数组数组).对于真正的多维(矩形)数组,它不会达到预期效果.

或者更有效率:

var singleArray = Array.ConvertAll(jaggedArray, x => x[0]);
Run Code Online (Sandbox Code Playgroud)

这更有效,因为它知道开始时的输出大小,并直接构建数组 - 但它比现在使用LINQ(它更普遍适用于所有序列,而不仅仅是数组)更少惯用.