以下是我正在调用的代码,我的代码低于异常。 收藏被修改;枚举操作可能无法执行。
在此代码中,检查数据集是否包含tb_error表名,然后检查行计数。 如果rowcount> 1,插入db。 之后,我想清除那张桌子,之后我还需要清除其他视图。 请帮我修改我的代码。
if (MainClass.OutputDataset.Tables.Contains(tb_error.TableName))
{
foreach (DataRow drErr in MainClass.OutputDataset.Tables[tb_error.TableName].Rows)
{
//insert into DB
}
}
if (MainClass.OutputDataset != null && MainClass.OutputDataset.Tables["tb_error"].Rows.Count > 0)
{
MainClass.OutputDataset.Tables["tb_error"].Clear();
}
MainClass.dsinput.Tables.Remove("BSData_VW");
}
答案 0 :(得分:0)
这是因为底层集合已经添加或删除了项目,这使循环失效。
您可以拍摄快照,例如:
foreach (DataRow drErr in MainClass.OutputDataset.Tables[tb_error.TableName].Rows.ToList())
{
//insert into DB
}
关键是最后的.ToList()
调用,这意味着foreach循环仅在Rows
上运行,因为它位于时间点。
答案 1 :(得分:-1)
当你收到类似的错误时,你几乎不得不放弃使用foreach
并提出其他一些循环机制。您可以尝试使用for
语句或使用变量和while
语句滚动自己的语句。