6

csv ファイルを解析するときに、特定のフィールドが必須であることを定義するにはどうすればよいですか。基本的に、指定されたフィールドが空にならないようにしたいのですが、空である場合は例外がスローされるようにします。マッピング クラスは次のとおりです。

public sealed class DataMapper : CsvClassMap<DataType>
{
    public DataMapper()
    {
        Map(m => m.Field1).Name("FirstField");
        Map(m => m.Field2).Name("SecondField");
        Map(m => m.Field3).Name("ThirdField"); // this field should be mandatory
    }
}

と使用法:

List<DataType> data;
using (var sr = new StreamReader(localFilePath))
{
    var reader = new CsvReader(sr);
    reader.Configuration.RegisterClassMap<DataMapper>();
    data = reader.GetRecords<DataType>().ToList();
}

現在、次のようにデータリストの結果を確認しています:

var numberOfInvalidRecords = data.Count(data => string.IsNullOrEmpty(data.Field3));
if (nullAccountHolderRecords > 0)
{
    //handle
}

CSVHelper ドキュメントに組み込み機能が見つかりませんでした。何か不足していますか?

4

4 に答える 4

3

開発者は Validate メソッドを追加しました: https://joshclose.github.io/CsvHelper/examples/configuration/class-maps/validation

これを使用して、null 以外または空の文字列に対して検証します。

Map(m => m.Id).Validate(field => !string.IsNullOrEmpty(field));

https://github.com/JoshClose/CsvHelper/issues/556

于 2019-09-11T15:49:19.163 に答える