您当前的位置: 首页 >  c#

Phil Arist

暂无认证

  • 6浏览

    0关注

    276博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C#中关于“集合已被修改,可能无法操作枚举类型”报错的解决方法

Phil Arist 发布时间:2021-07-26 11:11:42 ,浏览量:6

 出错的代码如下

foreach (var item in 你定义的集合)   {                 这里是你写的对集合的操作语句;        }

这个时候项目运行起来的过后,就会提示“集合已被修改,可能无法操作枚举类型” 这个错误

实例:

foreach (var item in nDtos)
            {
                if (item.PoStatus.ToString().ToUpper().Equals(PurchasePOSides_CR.POStatus.Combine.ToString().ToUpper()))
                {
                    var nSqlQuery = $"select *  from SRMPURCHASEPO_CR  where combineflag='Yes' ";
                    var nResults = _sqlExecuter.SqlQuery(nSqlQuery).ToList();
                    nDtos.AddRange(nResults);
                    nDtos.Remove(item);
                }
                
            }

通常情况下,不要在枚举集合的操作,比如Foreach中去执行修改集合的操作,如果需要修改,应先使用ToArray()方法

foreach (var item in nDtos.ToArray())
            {
                if (item.PoStatus.ToString().ToUpper().Equals(PurchasePOSides_CR.POStatus.Combine.ToString().ToUpper()))
                {
                    var nSqlQuery = $"select *  from SRMPURCHASEPO_CR  where combineflag='Yes' ";
                    var nResults = _sqlExecuter.SqlQuery(nSqlQuery).ToList();
                    nDtos.AddRange(nResults);
                    nDtos.Remove(item);
                }
                
            }

这样将枚举集合先进行ToArry()操作,将nDtos列表对象转换成数组对象,再进行修改操作不会对集合进行修改,改动的只是集合中元素的类容。

关注
打赏
1662360869
查看更多评论
立即登录/注册

微信扫码登录

0.0376s