我们有一个大约100,000行的文本文件,每行大约50列,大部分数据都很小(5到10个字符或数字)。
这是一项非常简单的任务,但只是想知道将这些数据导入C#数据结构(例如DataTable)的最佳方法是什么?
答案 0 :(得分:9)
我会将其作为带有制表符分隔符的CSV格式阅读:
修改强>
以下是您需要的简单例子:
DataTable dt = new DataTable();
using (CsvReader csv = new CsvReader(new StreamReader(CSV_FULLNAME), false, '\t')) {
dt.Load(csv);
}
CSV_FULLNAME是制表符分隔CSV的完整路径+文件名。
答案 1 :(得分:3)
使用.NET的内置文本解析器。它是免费的,具有很好的错误处理能力,可以处理很多奇怪的球案。
http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser(VS.80).aspx
答案 2 :(得分:1)
如果FileHelpers,您可以将选项卡定义为分隔符。通过提供的链接访问该网站,并有一个偷看。
希望这有帮助, 最好的祝福, 汤姆。
答案 3 :(得分:0)
两个选项:
System.Data.OleDb
命名空间中的类。这样做的好处是可以直接读入数据表,就像你用非常少的代码一样,但要正确起来可能很棘手,因为它是制表符而不是逗号分隔符。 答案 4 :(得分:0)
但是,您解析这些行,请确保使用支持转发和倒带的内容,作为数据网格的数据源。您不想先将所有内容加载到内存中,对吗?如果下次数据量应该是十倍,怎么样?制作一些内容使用file.seek的东西,不要先读取内存中的所有内容。这是我的建议。
答案 5 :(得分:0)
简单,但不一定是一个很好的方式:
使用文本阅读器将文件读入字符串
使用String.Split获取行
使用带有制表符的String.Split来获取字段值