2012-01-04 39 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

相關問題