为啥'while(csv.Read())' 在 CsvHelper 中不能工作两到三遍?
Posted
技术标签:
【中文标题】为啥\'while(csv.Read())\' 在 CsvHelper 中不能工作两到三遍?【英文标题】:Why does not 'while(csv.Read())' work two / three times in CsvHelper?为什么'while(csv.Read())' 在 CsvHelper 中不能工作两到三遍? 【发布时间】:2021-10-04 19:14:41 【问题描述】:我使用了 CsvHelper,但我遇到了问题,我想遍历文件中的标题(列)一样多的行,并且在每个步骤中都会在 while
部分中执行一些特定的逻辑。但是,在第一个循环之后,我无法进入while
,而且我不知道如何修复它或如何刷新阅读器行数计数器?
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
大家有什么想法,
【问题讨论】:
【参考方案1】:我认为您应该切换您的 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;
【讨论】:
以上是关于为啥'while(csv.Read())' 在 CsvHelper 中不能工作两到三遍?的主要内容,如果未能解决你的问题,请参考以下文章
为啥`做 ...;出口(...); C 语言中的 while (0)`? [复制]
C语言 counter=counter+1 是啥意思,为啥后面要加1,去掉行吗?与while 有什关系?