我在带有列标题的文本文件中有数字数据。我发现了一个很好的解决方案,可以将字符串数据读入数据表
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];
}
然后我最终将数字作为字符串。
答案 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的东西?