CsvHelperでいちいちMapをつくるのめんどくさい。
CsvHelperでジェネリックにCsvファイルを読み書きしたい!
そんなときはこれで解決
このコードで、クラスのプロパティの文字列に一致したHeaderを持つCsvファイルを読み込んだり書き込んだりしてくれます。
読み込み
ReadCsv.cs
publicstaticIList<T>Read<T>(stringfilepath){using(varreader=newStreamReader(filepath))using(varcsv=newCsvReader(reader,CultureInfo.CurrentCulture))returncsv.GetRecords<T>().ToList();}書き込み
WriteCsv.cs
publicstaticvoidWrite<T>(IEnumerable<T>objs,stringfilepath){using(varreader=newStreamWriter(filepath))using(varcsv=newCsvWriter(reader,CultureInfo.CurrentCulture))csv.WriteRecords<T>(objs);}Appendix
ちなみにクラスに対応するHeaderがないときはエラーになってしまう。。。
そんなときは!
MyClass.cs
publicclassMyClass{[Index(0)]publicDateTimeDate{get;set;}[Index(1)]publicdoubleValue{get;set;}}みたいな感じでAttributionをつければいい感じに読み取ってくれます。
まとめ
多分これが一番シンプルで汎用性が高い!と思ってる。
いままでのコードが激減するかも。