CsvHelperで楽させて頂く
もう何年前に書いたのか忘れてるツールの機能を追加する為に
A .NET library for reading and writing CSV files. Extremely fast, flexible, and easy to use. | CsvHelperを使ってみる。
プロジェクトへの追加はパッケージマネージャコンソールで
PM> Install-Package CsvHelper
とする。まあ、Visual Studioのメニューからでも出来ますね。
で、使うソースに
using CsvHelper;
using CsvHelper.Configuration;
追加して、今回の入力CSVファイルであるダビジェネのテキスト出力はレースヘッダとそのレースの出走馬毎のデータからなる2種類のCSVが混在するのでそれぞれのクラスとそのマップクラス。更に出力するターゲット用外部指数ファイルのクラスとそのマップクラスを定義。
csv.Context.RegisterClassMap<DGRaceTable>();
csv.Context.RegisterClassMap<DGUmaTable>();
って感じで2種類のマップを指定して
csv.Read();
した後にそれぞれ該当する行を
DGRaceRecords.Add(csv.GetRecord<DGRace>());
または
DGUmaRecords.Add(csv.GetRecord<DGUma>());
としてListに追加して、そのListを使ってターゲット用のListを作って書込みです。その昔はベタに読込だファイルから自力でパースしながらコンバートした気がしますが、今回一度CsvHelper使ってある程度使い方を理解したので、CSVファルイ関連は今後楽出来るかなぁと。