CsvHelper:用另一个表达式替换丢失的Csv字段?

时间:2017-10-06 12:17:32

标签: c# automapper csvhelper

如果CSV文件中缺少某个字段,则会引发异常。当字段丢失时,我宁愿映射另一个值(例如空字符串)。

Map(dest => dest.PatientID).Name("Patient ID");

CsvHelper.CsvMissingFieldException: 'Fields 'Patient ID' do not exist in the CSV file.'

如果使用配置设置IgnoreReadingExceptions,则不会在结果中读取任何记录。

var csv = new CsvReader(sr);
csv.Configuration.RegisterClassMap<TMap>();
csv.Configuration.IgnoreReadingExceptions = true;
records = csv.GetRecords<TR>().ToList();

如何更改映射,以便在映射字段为MISSING时,可以将其替换为另一个表达式?

1 个答案:

答案 0 :(得分:8)

在2.x中你可以这样做:

csv.Configuration.WillThrowOnMissingField = false;

在3.x中你可以这样做:

// Turn off.
csv.Configuration.MissingFieldFound = null;


// Log missing field.
csv.Configuration.MissingFieldFound = ( headerNames, index, context ) =>
{
    logger.WriteLine( $"Field with names ['{string.Join( "', '", headerNames )}'] at index '{index}' was not found. );
};