2012-01-04 49 views
0

我有一些大的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,它与上面相同)。

+0

对我来说很好。 – ken2k 2012-01-04 10:14:36

回答

0

只要您确信数据中永远不会有逗号,您的代码看起来很好。

周围有很多的CSV读者在网上是更稳健:here's one

0

我有进行翻译的相同的形式非常类似的应用中,我们读到的所有行到一个IDictionary,然后执行新的使用数据并行Parallel.ForEach(sourceCollection,item => Process(key,item))创建对象。我们记录的任何错误Key都是行号。

+0

这表现如何?你有没有比较简单的方式? – BlueChippy 2012-01-09 04:24:51

+0

在我们的Prod服务器上,双核处理器的工作速度比标准的ForEach循环快3倍,在虚拟环境中,性能比单线程模型有所提高,但不是高水平。我已经测试了它与VB TextFieldParser的比较,而且由于逻辑要求,我们的情况更快。 – Lloyd 2012-01-09 08:09:36

相关问题