2017-10-06 59 views
0

CSV文件中缺少字段时,会引发异常。当某个字段丢失时,我宁愿映射另一个值(如空字符串)。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(); 

如何更改该映射使得当映射字段缺失,也可以与另一种表达取代?

回答

1

在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.); 
}; 
+0

你有展示MissingFieldFound任何使用的例子吗?那些我发现只是将其设置为空。 –

+1

我会在答案中举个例子。 –

相关问题