为什么 'while(csv.Read())' 在 CsvHelper 中不能工作两次/三次?

Why does not 'while(csv.Read())' work two / three times in CsvHelper?

我使用 CsvHelper 但我遇到了问题,我想尽可能多地遍历文件中的行 headers(columns) 并且在每个步骤中都在 while 部分。但是,在第一个循环之后,我无法进入 while 并且我不知道如何修复它或如何刷新 reader 行计数器?

using (var reader = new StreamReader(file))
{
  var config = new CsvConfiguration(CultureInfo.InvariantCulture)
  {
    Delimiter = ";",
  };

  using (var csv = new CsvReader(reader, config))
  {
    for (var col = 1; col < headers.Length; col++)
    {
      while (csv.Read())
      {
        //do some logic
      }
    }
  }
}

谁有想法,

我认为您应该切换 forwhile 语句。您需要先读取行,然后遍历列。

void Main()
{
    using (var reader = new StringReader("Id,Name\n1,One\n2,Two"))
    using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
    {
        csv.Read();
        csv.ReadHeader();
        var headers = csv.HeaderRecord;
        
        while (csv.Read())
        {
            for (var col = 0; col < headers.Length; col++)
            {
                Console.WriteLine(csv.GetField(col));               
            }
            Console.WriteLine();
        }
    }
}

public class Foo
{
    public int Id { get; set; }
    public string Name { get; set; }
}