我有一个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行,所以上面代码正在做的是显示从第一行到最后一行的消息框,然后返回显示第一行到最后一行并继续执行...如何在第一次迭代时到达最后一行时退出吗?
答案 0 :(得分:2)
这是您的代码,采用伪代码形式:
for each line in the file
print out every single line in the file
这可以理解地打印出文件的每一行不止一次,尽管不是无限次。它将为文件中的每一行打印出文件中的每一行。
要打印出文件中的每一行,请删除外部foreach
。
答案 1 :(得分:2)
由于这第一行(正如我在评论中所说):
foreach (string line in lines)
您将在CSV中每行执行一次完整的CSV处理(显示每行的每个字段)。
您可能希望删除此foreach
循环。
编辑:
您的代码 退出while
循环,并退出周围的foreach
,但仅在经过大量无用的迭代之后。