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

时间:2014-06-26 09:39:42

标签: c# arrays multidimensional-array jagged-arrays

是否有潜在的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];
}

1 个答案:

答案 0 :(得分:6)

我只是使用LINQ。这不会避免循环&#34;在执行方面,但它会避免您的源代码中的循环:

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

请注意,这依赖于它是一个锯齿状数组(数组数组)。它将按照您对真正的多维(矩形)数组的要求进行操作。

或稍高效:

var singleArray = Array.ConvertAll(jaggedArray, x => x[0]);

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