为什么CSV解析器不退出循环?
本文关键字:退出 循环 CSV 为什么 | 更新日期: 2023-09-27 18:08:15
我有一个foreach语句,它遍历CSV文件并显示数组中的字段:
foreach (string line in lines)
{
//MessageBox.Show(line);
using (TextFieldParser parser = new TextFieldParser(textBox1.Text))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
foreach (string field in fields)
{
colArray.Add(field);
}
MessageBox.Show(string.Join(",", colArray));
colArray.Clear();
}
}
}
我的CSV有5行,所以上面的代码正在做的是显示消息框从第一行到最后一行,然后回到显示第一行到最后一行,并继续这样做…在第一次迭代中到达最后一行时,如何退出?
由于第一行(正如我在评论中所说):
foreach (string line in lines)
您将在CSV中每行执行一次完整的CSV处理(显示每行的每个字段)。
你可能想要删除这个foreach
循环。
你的代码确实退出了while
循环,并退出了周围的foreach
,但只有在大量无用的迭代之后。
下面是您的代码,伪代码形式:
for each line in the file
print out every single line in the file
可以理解,这不止一次地打印文件的每一行,尽管不是无限多次。它将为文件中的每一行打印一次文件中的每一行。
要只打印一次文件中的每一行,请删除外部的foreach
。