6

可能重复:
如何将 list<> 转换为多维数组?

我想double[,]为此目的创建一个数组,因为我不知道这个数组的长度是多少,我想先制作一个,List然后再使用List<T>.ToArray()将其转换为double[,]

public double[,] FilterClampedData(double[,] data)
{
    var finalData = new List<double[]>();

    //Do some stuff on parameter

    return finalData.ToArray(); ///Does not compile :(
}
4

3 回答 3

5

既然ToArray返回一个一维数组,难怪这不会编译。但是,如果您要返回double[][],它会编译。您还可以使用两个嵌套循环手动构建二维数组:

var R = finalData.Count;
var C = finalData[0].Length;
var res = new double[R, C];
for (int r = 0 ; r != R ; r++)
    for (int c = 0 ; c != C ; c++)
        res[r, c] = finalData[r][c];
return res;

上面的代码假定您在 中至少有一项finalData,并且其中所有列表的长度finalData相同。

于 2012-07-02T14:35:52.327 回答
1

finalData.ToArray()将产生double[][],因为:

  • List<T>.ToArray()返回T[]
  • List<T[]>.ToArray()返回T[][]
于 2012-07-02T14:35:21.013 回答
1
  1. 实例化一个新的最大尺寸的双精度数组[列表的长度,列表中的最大数组长度]
  2. 使用 double for 循环遍历列表(首先在列表中,嵌套在当前列表项上)并填充新数组
于 2012-07-02T14:35:29.127 回答