CsvHelper:用另一个表达式替换缺失的 Csv 字段?
CsvHelper: Replace missing Csv field with another expression?
当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();
如何更改映射,以便当映射字段缺失时,可以用另一个表达式替换它?
在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. ");
};
当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();
如何更改映射,以便当映射字段缺失时,可以用另一个表达式替换它?
在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. ");
};