排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术

前言
今天遇到一个foreach中的问题,foreach遍历的集合发生改变就会发生报错
解决办法,将foreach替换成for解析
- //定义一个空的对象list用来合并重复数据
- IDrugStoreList drugStoreList = new DrugStoreList();
- //循环storeList
- foreach (IDrugStore item in this.storeList.Rows)
- {
- //定义一个状态
- int type = 0;
- //循环对比是否存在重复数据
- for (int i = 0; i < drugStoreList.Rows.Count; i++)
- {
- //是否重复根据DrugCode来区别
- if (item.DrugCode == (drugStoreList.Rows[i] as IDrugStore).DrugCode)
- {
- //重复就将数量加起来
- (drugStoreList.Rows[i] as IDrugStore).Number += item.Number;
- //更改状态
- type = 1;
- //跳出循环
- break;
- }
- }
- //第一行不需判断
- if (drugStoreList.Rows.Count==0)
- {
- type = 1;
- drugStoreList.AddEntity(item);
- }
- //如果不是重复的就新增
- if (type == 0)
- {
- drugStoreList.AddEntity(item);
- }
- }
总结:
foreach 内部使用枚举器迭代,而这个迭代器在一开始的时候就返回了,它的迭代次数已经确定了,
但是,你后面又更新了集合,导致之前的迭代次数不一致了
当使用 foreach 的时候,集合只能处于只读状态,否则产生不可以预期的效果
评价