Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9701

c#:(多分)最短でGenericにCsvを読み書きするコードwith CsvHelper。

$
0
0

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をつければいい感じに読み取ってくれます。

まとめ

多分これが一番シンプルで汎用性が高い!と思ってる。
いままでのコードが激減するかも。


Viewing all articles
Browse latest Browse all 9701

Trending Articles