C# 发生错误。收集被修改;枚举操作可能无法执行
我很抱歉再次问这个问题,我正在浏览与此相关的其他帖子,但无法理解如何根据答案修改我的代码,因此我将其发布在这里以寻求帮助 下面的代码抛出了异常,我并没有试图像其他帖子中建议的那样修改我的代码C# 发生错误。收集被修改;枚举操作可能无法执行,c#,C#,我很抱歉再次问这个问题,我正在浏览与此相关的其他帖子,但无法理解如何根据答案修改我的代码,因此我将其发布在这里以寻求帮助 下面的代码抛出了异常,我并没有试图像其他帖子中建议的那样修改我的代码 您不能更改正在迭代的集合 正如一些评论者所建议的,使用for循环,或者在循环中建立要删除的项的集合,然后再删除它们。您可能还需要修改deleteMitchellandscape方法 var deleteList = new List<Assessment.tblMitchellLandscapeIDR
您不能更改正在迭代的集合 正如一些评论者所建议的,使用for循环,或者在循环中建立要删除的项的集合,然后再删除它们。您可能还需要修改
deleteMitchellandscape
方法
var deleteList = new List<Assessment.tblMitchellLandscapeIDRow>();
foreach (Assessment.tblMitchellLandscapeIDRow MitchellRow in objAssessment.tblMitchellLandscapeID.Rows)
{
if (MitchellRow.AssessmentVersionID == AssessmentVersionID)
deleteList.Add(MitchellRow);
}
DeleteMitchellLandscape(ref objAssessment, deleteList, UserFullname, ref ErrorMessage);
var deleteList=new List();
foreach(Assessment.tblMitchellLandscapeIDRow MitchellRow in objassesment.tblMitchellLandscapeID.Rows)
{
if(MitchellRow.AssessmentVersionID==AssessmentVersionID)
deleteList.Add(MitchellRow);
}
DeleteMitchellandscape(参考对象评估、删除列表、用户名、参考错误消息);
在使用foreach语句对集合进行迭代时,不能修改集合(tblMitchellLandscapeID中的行)。我想这就是你的Delete方法所做的。使用for
循环,而不是foreach
。如果要在循环过程中从列表中删除项目,则以相反的方式进行迭代-这样可以省去调整索引器的麻烦。为循环的答案而发布的链接不是foreach。如果使用“for”循环,请记住每次删除行时从循环计数器中减去一个。
var deleteList = new List<Assessment.tblMitchellLandscapeIDRow>();
foreach (Assessment.tblMitchellLandscapeIDRow MitchellRow in objAssessment.tblMitchellLandscapeID.Rows)
{
if (MitchellRow.AssessmentVersionID == AssessmentVersionID)
deleteList.Add(MitchellRow);
}
DeleteMitchellLandscape(ref objAssessment, deleteList, UserFullname, ref ErrorMessage);