c# - 将数据表转换为 double 组

标签 c# arrays

我有一个 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/

相关文章:

c# - 在 .NET 平台调用中使用 unsafe struct * 作为不透明类型而不是 IntPtr 是否有效?

c# - 获取两个字符串的公共(public)前缀

c# - 如何在 UWP C# 中共享过滤后的图像

php - Laravel Eloquent ORM中如何获取插入的多行数据

python - 如何从文件中仅检索那些带有名词标签的单词?

javascript - 向现有 javascript 对象添加新属性

c# - Windows 如何从桌面快捷方式强制 "minimized"状态?

c# - 无法将嵌套关系或元素列添加到包含 SimpleContent 列的表

arrays - 如何访问 forEach Javascript 中的对象

java - Android 中的 JSON 解码