我想读取一个数据表,其中包含将每行不同列组成的数据表。将具有不同列的数据表读入C中的数组#
我的样本数据看起来像这样
1 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.098 0.000
1 0.000 0.051 0.851 0.000 0.000 0.000 0.000
1 0.000 0.000 0.000 0.000 0.000 0.000 0.266 0.203 0.000
1 0.011 0.210 0.311 0.000 0.000 0.000 0.000 0.000 0.000
1 0.000 0.000 0.000 0.000 0.000 0.009 0.007 0.497
1 0.004 0.023 0.063 0.140 0.000 0.000 0.000 0.000 0.000
1 0.027 0.010 0.130 0.192 0.156 0.082 0.068
我设法把它放到一个数组,如下所示:
public static double[][] dataTableToMatrix(DataTable dt)
{
double[][] data = new double[dt.Rows.Count][];
for (int x = 0; x < dt.Rows.Count;x++)
{
data[x] = new double[dt.Columns.Count];
for (int y = 0; y < dt.Columns.Count; y++)
{
if ((dt.Rows[x][y]) != DBNull.Value)
{
data[x][y] = Convert.ToDouble(dt.Rows[x][y]);
}
else
{
break;
}
}
}
return data;
}
我试图上面的代码,但所得的阵列具有总是最高柱每当有一个较短的列时,计数为零。我想读取它,直到每行中的最后一个值跳到下一行。任何解决这个问题的方法?
甚至有可能创造一个具有不同行长度的表格?你不确定你误解行长与值为空吗? – Gusman
DataTables不支持可变长度的行。这些列在模式级别定义,非常类似于数据库表。这些空白很可能是空值,您确实在循环中处理这些空值。 –