我正在使用Math.Net Numerics包进行一些统计工作和回归等。因为特定表中的各种不同列可以用作自变量,所以我决定编写一个方法来创建一个通过创建double [] []数组并将其传递给MathNet.Numerics中的DenseOfRowArrays()方法,从DataTable直接从查询中生成矩阵。调用代码将确保只有具有数值的列才会出现在DataTable中。
我在这里听到了答案:C# Cast Entire Array?
public static Matrix<double> DenseOfDataTable(DataTable dt)
{
double[][] arrayFromDataTable = dt.AsEnumerable().Select(row => Array.ConvertAll(row.ItemArray, item => (double)item)).ToArray();
return CreateMatrix.DenseOfRowArrays(arrayFromDataTable);
}
我的问题是在运行时我在(double)item
上收到InvalidCastException,item
在检查时显示的值为0.000。