C#错误集合被修改;枚举操作可能无法执行

时间:2015-02-19 06:22:32

标签: c#-4.0

以下是我正在调用的代码,我的代码低于异常。 收藏被修改;枚举操作可能无法执行。

在此代码中,检查数据集是否包含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");               
        }

2 个答案:

答案 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语句滚动自己的语句。