CsvHelper 忽略 header 个名称的大小写

CsvHelper Ignore case for header names

我有一些class

 public class Import
{
    public DateTime Date { get; set; }
    public string Category { get; set; }
}

在 csv 文件中 header 名称可以是小写。 如何在读取文件时忽略大小写?

 var reader = new StreamReader(@"///");
        var csv = new CsvReader(reader);

        var records = csv.GetRecords<Import>().ToList();

如果您正在使用 http://joshclose.github.io/CsvHelper/,您可以在构建 CsvReader 时或在构建后配置它时提供一些配置。

    using (var stringReader = new StringReader(yourString))
    using (var csvReader = new CsvReader(stringReader))
    {
        // Ignore header case.
        csvReader.Configuration.PrepareHeaderForMatch =  (string header, int index) => header.ToLower();
        return csvReader.GetRecords<Import>().ToList();
    }

https://joshclose.github.io/CsvHelper/api/CsvHelper.Configuration/Configuration/

的 PrepareHeaderForMatch 部分中有更多文档

要获得更详细的信息,还可以在此处找到 class 映射说明: https://joshclose.github.io/CsvHelper/examples/configuration

希望对您有所帮助。

在当前版本的CsvHelper中,您必须这样配置它:

var csvConfig = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    PrepareHeaderForMatch
    = args => args.Header.ToLower()
};
using (var reader = new StreamReader(inputFile))
using (var csv = new CsvReader(reader, csvConfig))
{
    ...
}