收集被修改;枚举操作可能不会执行foreach循环

时间:2013-04-11 21:07:42

标签: c# .net

我知道这个问题在这里有很多问题,但我无法根据我的特定循环收集正确答案。

我正在使用foreach循环来循环遍历业务实体,如下所示:

foreach (Content item in category)
 {
   item.Stats = 55;
   item.Commit();
 }

对于它检索的第一个项目,foreach循环正确运行并放置值,但是对其他几个项目感到害羞,我在页面标题中出现错误。我知道我收到了错误,因为在迭代期间无法修改该项。但是我在这个循环中对于如何提交数据库感到很遗憾。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用项目的克隆创建相同的集合,而不是修改迭代集合中的项目,修改并提交克隆集合中的相应项目。然后在完成后丢弃迭代的集合,将克隆的集合视为新的“原件”。

答案 1 :(得分:0)

最简单的解决方案是添加ToList(),这会导致枚举原始枚举的副本。

foreach (Content item in category.ToList())
 {
   item.Stats = 55;
   item.Commit();
 }