打印DataTable列名及对应值时遇‘Row不存在于当前上下文’错误求助
问题分析与解决方案
嘿,我一眼就瞅出你代码里的问题啦!这个报错(准确来说是col变量不在当前上下文)的根源,是代码块的作用域没搞对。
错误原因
你写的嵌套foreach里,第二个遍历列的循环没有用大括号{}包裹所有要执行的代码——这就导致只有第一行Console.WriteLine(col.ColumnName);属于列循环,而下一行Console.WriteLine(row[col]);直接跳出了列循环的作用域。这时候col变量已经失效,自然会触发上下文错误。
修正后的代码
给第二个foreach加上大括号,把两行输出都包裹到列循环的作用域里就行:
foreach (DataRow row in dtfinal.Rows) { foreach (DataColumn col in dtfinal.Columns) { Console.WriteLine(col.ColumnName); Console.WriteLine(row[col]); // 现在col和row都在有效作用域内啦 } }
补充说明
你之前参考的解决方案无效,大概率是没注意到这种“隐形”的语法细节——C#里单语句循环可以省略大括号,但多执行语句时必须用大括号明确界定代码块范围,不然很容易踩这类作用域的坑。
内容的提问来源于stack exchange,提问作者user9470599
相关产品推荐
相关产品推荐

