【发布时间】:2022-01-05 12:38:53
【问题描述】:
我无法控制我们可能获得的 csv 文件,并且他们会不时在名称中添加一个额外的“_”或年份,这与我所做的映射不匹配。 试过了
var config = new CsvConfiguration(cultureInfo)
{
PrepareHeaderForMatch = args => args.Header.Replace("_", " "),
};
config.PrepareHeaderForMatch = args => Regex.Replace(args.Header, @"2021", string.Empty);
List<CSVInvoiceLineDetail> CSVParsedDataList = new();
using TextReader reader = new StreamReader(file.OpenReadStream());
using var csv = new CsvReader(reader, config);
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
CSVParsedDataList.Add(csv.GetRecord<CSVInvoiceLineDetail>());
// Do something with the record.
}
但它不起作用,标题仍然是它们最初的样子。谁能指出这里做错了什么?
【问题讨论】:
-
让我印象深刻的第一件事是只有
Regex.Replace将被执行,而不是替换下划线。相反,将一个函数分配给PrepareHeaderForMatchonce 并在其中执行两个替换。