修改集合时避免使用Interception de InvalidOperationException

时间:2013-12-12 07:30:31

标签: c# collections

我有这段代码来修改foreach打开的表单

的类别列表
var lst = Application.OpenForms.OfType<FrmProduit>();
foreach (var item in lst)
{
    item.getCategorie(Categories.getLastCategorieId());
}

好吧,第一个循环没问题,但是第二个循环我有InvalidOperationExcetion

请帮助

1 个答案:

答案 0 :(得分:1)

尝试使用List<T> ForEach方法,如下所示:

Application.OpenForms.OfType<FrmProduit>()
           .ToList()
           .ForEach(i => i.getCategorie(Categories.getLastCategorieId()));

这不会抛出错误 - 但如果'getCategorie'方法有返回值,您可能想要对它执行某些操作。如果是这种情况,您需要:

Application.OpenForms.OfType<FrmProduit>()
           .ToList()
           .ForEach(i => 
            {
                var retVal = i.getCategorie(Categories.getLastCategorieId());
                // do something with retVal here...
            });