C# 为什么';CSV解析器是否退出循环?
我有一个foreach语句,它遍历CSV文件并显示数组中的字段:C# 为什么';CSV解析器是否退出循环?,c#,loops,csv,C#,Loops,Csv,我有一个foreach语句,它遍历CSV文件并显示数组中的字段: foreach (string line in lines) { //MessageBox.Show(line); using (TextFieldParser parser = new TextFieldParser(textBox1.Text)) { parser.TextFieldType = FieldType.Delimited; parser.SetDelimit
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行,所以上面的代码所做的是从第一行到最后一行显示messagebox,然后返回到从第一行到最后一行显示messagebox,并继续这样做。。。当第一次迭代到达最后一行时,如何退出?以下是伪代码形式的代码:
for each line in the file
print out every single line in the file
可以理解,这会多次打印文件的每一行,尽管不是无限多次。它将为文件中的每一行打印一次文件中的每一行
要只打印文件中的每一行,请删除外部的
foreach
这是您的伪代码形式的代码:
for each line in the file
print out every single line in the file
可以理解,这会多次打印文件的每一行,尽管不是无限多次。它将为文件中的每一行打印一次文件中的每一行
要只打印一次文件中的每一行,请删除外部的
foreach
,因为这是第一行(正如我在评论中所说的):
您将在CSV中每行执行一次完整的CSV处理(显示每行的每个字段)
您可能希望删除此foreach
循环
编辑:
您的代码确实会退出
while
循环,并且确实会退出周围的foreach
,但只有在经过大量无用的迭代之后。因为第一行(正如我在评论中所说的):
您将在CSV中每行执行一次完整的CSV处理(显示每行的每个字段)
您可能希望删除此foreach
循环
编辑:
您的代码确实会退出
while
循环,并且确实会退出周围的foreach
,但只有经过大量无用的迭代之后。@MarioJVargas这正是TextFieldParser
的功能。。。它解析CSV数据。行
变量中有多少字符串?对于每个字符串,您将读取整个文件,并为其中的每一行显示一个messagebox。对于每个字符串。因此,如果文件中有5行,则表示有5个MessageBox。然后,如果行中有100个字符串,则表示有5*100个消息框。@MarioJVargas:TextFieldParser
-类是.NET framework中唯一的“板载”CSV解析器。你真的认为它不起作用吗?我经常使用它(VB.NET和C#)。@SearchForkKnowledge:您意识到您处理CSV的次数与文件中的行号相同吗?@MarioJVargas:无需删除VisualBasic
命名空间。它只是.NET框架中的一个类,不多不少。在我看来,你们团队的优先级是错误的。@MarioJVargas这正是TextFieldParser
的含义。。。它解析CSV数据。行
变量中有多少字符串?对于每个字符串,您将读取整个文件,并为其中的每一行显示一个messagebox。对于每个字符串。因此,如果文件中有5行,则表示有5个MessageBox。然后,如果行中有100个字符串,则表示有5*100个消息框。@MarioJVargas:TextFieldParser
-类是.NET framework中唯一的“板载”CSV解析器。你真的认为它不起作用吗?我经常使用它(VB.NET和C#)。@SearchForkKnowledge:您意识到您处理CSV的次数与文件中的行号相同吗?@MarioJVargas:无需删除VisualBasic
命名空间。它只是.NET框架中的一个类,不多不少。我认为你们团队的优先顺序是错误的。