CSV Helper 如何读取包含几行 header 行的 csv 文件

CSV Helper how to read csv file with several header lines

我正在使用 CsvHelper 编写一个包含多个 header 行的 csv 文件,这些行位于不同的位置(header 具有一定数量的列,但名称不同)。每个header后的行数不同

是否有可能在 csv 文件内的不同 header 行上使用 CsvHelper find/iterate(可能通过 header 的名称或部分名称搜索列)并在每个 header?

之后迭代读取记录

您必须手动执行此操作,逐行阅读并决定要做什么。

你开始的例子:

CSV File:

Test1, Test2, Test3

A,1,foo

TestA, TestB, Test3

B,07a0fca2-1b1c-4e44-b1be-c2b05da5afc7,bar

void Main()
    {
        using (var reader = new StreamReader("path\to\file.csv"))
        using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
        {
            csv.Configuration.HasHeaderRecord = false;
            csv.Configuration.RegisterClassMap<FooMap>();
            csv.Configuration.RegisterClassMap<BarMap>();
            var fooRecords = new List<Foo>();
            var barRecords = new List<Bar>();
            while (csv.Read())
            {
                switch (csv.GetField(0))
                {
                    case "A": // Or "Test1"
                        ...
                        break;
                    case "B": // Or "TestA"
                        ...
                        break;
                    default:
                        throw new InvalidOperationException("Unknown record type.");
                }
            }
        }
    } 

示例和文档: Reading Multiple Record Types