为什么 '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
}
}
}
}
谁有想法,
我认为您应该切换 for
和 while
语句。您需要先读取行,然后遍历列。
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; }
}
我使用 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
}
}
}
}
谁有想法,
我认为您应该切换 for
和 while
语句。您需要先读取行,然后遍历列。
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; }
}