如何将数字文本文件读入数据表

时间:2012-08-20 13:41:45

标签: datatable numeric

我在带有列标题的文本文件中有数字数据。我发现了一个很好的解决方案,可以将字符串数据读入数据表

Reading Comma Delimited Text File to C# DataTable, columns get truncated to 255 characters

我尝试将其用于数字数据但没有成功。我将字符串数组转换为双数组后,我尝试添加像这样的行

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];
}

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

1 个答案:

答案 0 :(得分: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的东西?