从csv文件输入创建IEnumerable 的最佳方式是什么?
我有一些大的csv文件,我需要导入IEnumerable(prob列表),以便我可以做一些“魔术”之前保存到数据库。我不需要csv中的每个值(列)。从csv文件输入创建IEnumerable <MyObj>的最佳方式是什么?
但是,我找不到比这更好的选择:
Read csv file by line
Split the line on ,
new MyObj{
Prop1 = split[0],
Prop2 = split[1],
Prop3 = split[6],
Prop4 = split[7],
Prop5 = split[9]
}
Add new MyObj to List
这工作和足够快,但似乎很笨重?
有没有其他的选择(除了添加ctor,它与上面相同)。
您可以使用CSV解析器 - Microsoft.VisualBasic.FileIO
命名空间中有一个 - TextFieldParser
。
FileHelpers是另一种流行的选择,并且有许多免费的(只是搜索)。
我有进行翻译的相同的形式非常类似的应用中,我们读到的所有行到一个IDictionary,然后执行新的使用数据并行Parallel.ForEach(sourceCollection,item => Process(key,item))创建对象。我们记录的任何错误Key都是行号。
这表现如何?你有没有比较简单的方式? – BlueChippy 2012-01-09 04:24:51
在我们的Prod服务器上,双核处理器的工作速度比标准的ForEach循环快3倍,在虚拟环境中,性能比单线程模型有所提高,但不是高水平。我已经测试了它与VB TextFieldParser的比较,而且由于逻辑要求,我们的情况更快。 – Lloyd 2012-01-09 08:09:36
对我来说很好。 – ken2k 2012-01-04 10:14:36