0

我在带有列标题的文本文件中有数字数据。我在这里找到了将字符串数据读入数据表的绝佳解决方案

将逗号分隔的文本文件读取到 C# DataTable,列被截断为 255 个字符

我试图将其调整为数字数据,但没有成功。将字符串数组转换为双精度数组后,我尝试添加这样的行

myDatatable.Rows.Add(myDoubleArray)

敌人似乎没有给我任何东西。我滴滴尝试将双精度转换为对象并粘贴数字,如下面的代码所示:

var objectNumbers = rowData.Cast<object>().ToList();
data.Rows.Add();
for (var j = 0; j < columns.Length; j++)
{
    data.Rows[data.Rows.Count - 1][j] = objectNumbers[j];
}

然后我最终将数字作为字符串。

4

1 回答 1

0

不知何故,我的问题搞砸了。可能是由于多任务处理失败。所以这是我的问题的更新。

如果我按如下方式添加列和行,我现在可以让数据表保存双精度:

myDataTable.Columns.Add(columnName, typeof(double));
var dataAsStrings = line.Split(charDelimiters, StringSplitOptions.RemoveEmptyEntries);

// convert to doubles
var dataAsDouble = new double[dataAsStrings.Length];
for (var i = 0; i < dataAsStrings.Length; i++)
{
    var isConverted = Double.TryParse(dataAsStrings[i], out dataAsDouble[i]);
    if (!isConverted) rowData[i] = Double.NaN;
}

var objectNumbers = dataAsDouble.Cast<object>().ToList();
myDataTable.Rows.Add();

for (var j = 0; j < columns.Length; j++)
{
    myDataTable.Rows[myDataTable.Rows.Count - 1][j] = objectNumbers[j];
}

对我来说,部分关键是将列添加为 typeof(double)。在我这样做之前,我什么都没有工作。我很幸运在这些论坛上找到了这个建议。如您所见,这段代码相当混乱,但更简单的尝试对我不起作用。有人可以告诉我一个更简单的方法来获得这些结果吗?也许使用 Linq 的东西?

于 2012-08-20T15:32:20.577 回答