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



是否有一个潜在的1 liner允许我从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];
}

我就用LINQ。这不会在执行方面"避免循环",但它会避免源代码中的循环:

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

注意,这依赖于它是一个锯齿数组(数组的数组)。它将而不是做你所期望的真正的多维(矩形)数组。

或者更有效一点:

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

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

相关内容

  • 没有找到相关文章

最新更新