datatable c#中的dataRow上下文外错误
本文关键字:错误 上下文 dataRow 中的 datatable | 更新日期: 2023-09-27 18:22:42
下面是我的代码,workRow
变量出现上下文外错误,请解决这个问题。那对我没有帮助。只有(reader.Name == "Result")
我想创建roe,其他如果想在同一行中添加列
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
if (reader.Name == "Result")
{
DataRow workRow = dt.NewRow();
}
if (columns.Contains(reader.Name))
{
//ERROR IS HERE out of context
workRow[reader.Name] = reader.Value;
}
writer.WriteStartElement(reader.Name);
break;
case XmlNodeType.Text:
writer.WriteString(reader.Value);
break;
case XmlNodeType.XmlDeclaration:
case XmlNodeType.ProcessingInstruction:
writer.WriteProcessingInstruction(reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
writer.WriteComment(reader.Value);
break;
case XmlNodeType.EndElement:
writer.WriteFullEndElement();
break;
}
}
Youre workRow变量在另一个if语句中声明,这就是为什么会出现该错误。
DataRow workRow; // Moved the declaration here
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
if (reader.Name == "Result")
{
workRow = dt.NewRow(); // this is okay if Result always comes first
}
if (columns.Contains(reader.Name))
{
//ERROR IS HERE out of context
workRow[reader.Name] = reader.Value;
}
writer.WriteStartElement(reader.Name);
break;
case XmlNodeType.Text:
writer.WriteString(reader.Value);
break;
case XmlNodeType.XmlDeclaration:
case XmlNodeType.ProcessingInstruction:
writer.WriteProcessingInstruction(reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
writer.WriteComment(reader.Value);
break;
case XmlNodeType.EndElement:
writer.WriteFullEndElement();
break;
}
}
如果如下所示,请在外部声明workRow,或者先在内部添加workRow[reader.Name]
。问题是,您正在if (reader.Name == "Result")
中确定workRow变量的范围,所以当您尝试访问此if块之外的workRow时,您会遇到错误。请检查可能适用于的样品修改
if (reader.Name == "Result")
{
DataRow workRow = dt.NewRow();
//Just a suggestion
if (columns.Contains(reader.Name))
{
workRow[reader.Name] = reader.Value;
}
}
将工作流声明为correct if语句的内部,如下所示。
if (reader.Name == "Result")
{
//DataRow workRow = dt.NewRow();
}
if (columns.Contains(reader.Name))
{
DataRow workRow = dt.NewRow();
//ERROR IS HERE out of context
workRow[reader.Name] = reader.Value;
}