Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 来自数据表的双精度[]_C#_Arrays_Datatable_Mathnet Numerics - Fatal编程技术网

C# 来自数据表的双精度[]

C# 来自数据表的双精度[],c#,arrays,datatable,mathnet-numerics,C#,Arrays,Datatable,Mathnet Numerics,我正在使用Math.Net Numerics包对回归等进行一些统计工作。因为特定表中的不同列可以用作自变量,所以我决定编写一个方法,通过创建一个double[]数组并将其传递给MathNet.Numerics中的DenseOfRowArrays()方法。调用代码将确保DataTable中只存在具有数值的列 我在这里得到了以下答案: 公共静态矩阵denseofdata(DataTable dt) { double[][]arrayFromDataTable=dt.AsEnumerable().Se

我正在使用Math.Net Numerics包对回归等进行一些统计工作。因为特定表中的不同列可以用作自变量,所以我决定编写一个方法,通过创建一个double[]数组并将其传递给MathNet.Numerics中的DenseOfRowArrays()方法。调用代码将确保DataTable中只存在具有数值的列

我在这里得到了以下答案:

公共静态矩阵denseofdata(DataTable dt)
{
double[][]arrayFromDataTable=dt.AsEnumerable().Select(row=>Array.ConvertAll(row.ItemArray,item=>(double)item)).ToArray();
返回CreateMatrix.DenseOfRowArrays(arrayFromDataTable);
}

我的问题是当运行它时,我在
(double)项上得到一个InvalidCastException,检查时
项显示值为0.000。

尝试将其更改为
Convert.ToDouble()
,这就是它所需要的,我一开始就把它写成泛型,这是一个愚蠢的错误。可能是@CNuts的重复。我有一个离题的问题。你已经用评论回答了这个问题。为什么不创建一个答案并将其标记为已接受?为什么有人问我?该问题未得到官方回答,其他用户认为该问题没有解决方案。我是新来的,所以我试着去理解它。@SeanStayn没关系。我的观点是,我已经在我标记的副本中回答了几乎相同的问题,因此我宁愿将此副本作为副本关闭,也不愿重复我自己。我很确定还有更多类似的答案。试着将其更改为
Convert.ToDouble()
,这就是它所需要的,我开始将其作为泛型编写时犯了一个愚蠢的错误。@CNuts的可能重复我有一个离题问题。你已经用评论回答了这个问题。为什么不创建一个答案并将其标记为已接受?为什么有人问我?该问题未得到官方回答,其他用户认为该问题没有解决方案。我是新来的,所以我试着去理解它。@SeanStayn没关系。我的观点是,我已经在我标记的副本中回答了几乎相同的问题,因此我宁愿将此副本作为副本关闭,也不愿重复我自己。我敢肯定还有更多类似的答案。
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);
        }