2012-01-04 7 views
0

私はDBに保存する前にいくつかの "魔法"を行うことができるように、私はIEnumerable(probのリスト)にインポートする必要があるいくつかの大きなcsvファイルを持っています。私は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 

これは動作し、十分に速いですが、非常に格好悪いようだ:

しかし、私はこれよりも良い選択肢を見つけることができませんか?

(上記のものと同じacheivesのctorを追加する以外に)別の方法がありますか?

+0

私によく見えます。 – ken2k

答えて

0

データにカンマがないことが確実である限り、コードは正常です。 here's one

0

私は翻訳の同じ形を行い、非常に類似したアプリケーションは、我々はIDictionaryを内のすべての行を読み、新しいを実行します:

、より強固であり、ネット上の多くのCSVリーダーがあります。データ並列化Parallel.ForEach(sourceCollection、item => Process(key、item))を使用したオブジェクトの作成行番号であるKeyを記録するエラー。

+0

これはどれくらいうまく動作しますか?あなたは単に普通の方法と比較していますか? – BlueChippy

+0

当社のProdサーバーでは、デュアルクアッドコアは、標準のForEachループよりも3倍高速に動作します。仮想環境では、シングルスレッドモデルよりもパフォーマンスは向上しますが、マージンは高くなりません。私はそれをVB TextFieldParserと比較してテストしました。そして、私たちのケースでは、ロジック要件のために高速でした。 – Lloyd

関連する問題