6

私は CSVHelper ライブラリを使用しています。このライブラリは、わずか 3 行のコードで CSV ファイルからオブジェクトのリストを抽出できます。

var streamReader = // Create a reader to your CSV file.
var csvReader = new CsvReader( streamReader );
List<MyCustomType> myData = csvReader.GetRecords<MyCustomType>();

ただし、 by file には無意味な行が含まれているため、ファイルの最初の 10 行をスキップする必要があります。LINQ を使用して「クリーンな」データを確保し、そのデータを次CsvFReaderのように に渡すとよいと思いました。

public TextReader GetTextReader(IEnumerable<string> lines)
{
    // Some magic here. Don't want to return null;
    return TextReader.Null;
}
public IEnumerable<T> ExtractObjectList<T>(string filePath) where T : class
{
    var csvLines = File.ReadLines(filePath)
                        .Skip(10)
                        .Where(l => !l.StartsWith(",,,"));
    var textReader = GetTextReader(csvLines);
    var csvReader = new CsvReader(textReader);
    csvReader.Configuration.ClassMapping<EventMap, Event>();
    return csvReader.GetRecords<T>();
}

しかし、私は本当に '静的な' 文字列のコレクションをTextReaer.

ここでの私の代替手段は、CsvReader を使用して CSV ファイルを 1 行ずつ処理し、オブジェクトを抽出する前に各行を調べることですが、それはやや不器用です。

4

2 に答える 2