我有一个 DataTable 对象作为 SQL 读取的结果。典型示例包含 100 行和 16 列。我需要多次遍历表格以提取计算值(应用程序是机器学习梯度下降)。 我试图加快计算速度,并避免每次使用时都强制转换从 DataTable 读取的值。有没有一种方法可以通过仅转换整个 DataTable 对象一次来创建新的二维索引数组,从而无需调用 Convert.ToDouble 1000x100x16=1,600,000 次。理想情况下,为了代码可读性,我想保留将数据引用为 ["colname",row]
目前的实现:
for(i=0;i<1000;i++)
foreach (DataRow row in dt.Rows)
calculation = Convert.ToDouble(row["col1"])....
最佳答案
使用:
using System;
using System.Linq;
using System.Data;
DataTable db = <some table>;
double[][] arrayOfDoubles = db.AsEnumerable().Select(x => new [] { Convert.ToDouble(x["SomeColumn"]), Convert.ToDouble(x["SomeColumn"]), ... }).ToArray();
不要忘记检查 DbNull
关于c# - 将数据表转换为 double 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43393754/