[英]dataRow out of context error in datatable c#
下面是我的代码,我无法使用workRow
变量,因此请解决此问题,我尝试了一切,如编写单独的函数来添加row。 。 那对我没有帮助。 。 仅(reader.Name == "Result")
我要创建子项,如果要在同一行中添加列, (reader.Name == "Result")
其他
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;
}
}
您在另一个if语句中声明了workRow变量,这就是您得到该错误的原因。
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;
}
}
将工作流声明为正确的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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.