一、问题描述

  在做 数组、列表、集合遍历时,可能我们会遇见这个问题。Collection was modified;enumeration operation may not execute ,翻译的中文意思:集合已修改;枚举操作可能无法执行。

二、解决方案

  就是在遍历时,不要改变正在遍历的集合即可,您可以先遍历完在对其进行操作。

三、案例

  出现问题前的代码如下,就是我在遍历 items 的同时,又往 items 中 add 数据。

public async Task<ListResultDto<RecordBookListDto>> GetFlatRecordBookItems()
{
var query = _recordBookRepository
.GetAll();
var entities = await query.ToListAsync();
var items = new List<RecordBookListDto>();
foreach (var entity in entities)
{
var dto = entity.MapTo<RecordBookListDto>();
items.Add(dto);
} //todo 获取测点编号
foreach (var item in items)
{
if (!string.IsNullOrEmpty(item.DataId))
{
String[] array = item.DataId.Replace("[", "").Replace("]", "").Replace("\"", "").Split(','); foreach (var ar in array)
{
var ins = _instrumentGroupRepository.Get(Guid.Parse(ar));
var l = new RecordBookListDto();
l.Id = Guid.Parse(ar);
l.ParentId = item.Id.ToString();
l.Name = ins.No;
items.Add(l);
}
}
} var listDto = new ListResultDto<RecordBookListDto>(items);
return listDto;
}

  修改完成后的代码:

public async Task<ListResultDto<RecordBookListDto>> GetFlatRecordBookItems()
{
var query = _recordBookRepository
.GetAll();
var entities = await query.ToListAsync();
var items = new List<RecordBookListDto>();
foreach (var entity in entities)
{
var dto = entity.MapTo<RecordBookListDto>();
items.Add(dto);
} List<RecordBookListDto> newItems = new List<RecordBookListDto>(); //todo 获取测点编号
foreach (var item in items)
{
if (!string.IsNullOrEmpty(item.DataId))
{
String[] array = item.DataId.Replace("[", "").Replace("]", "").Replace("\"", "").Split(','); foreach (var ar in array)
{
var ins = _instrumentGroupRepository.Get(Guid.Parse(ar));
var l = new RecordBookListDto();
l.Id = Guid.Parse(ar);
l.ParentId = item.Id.ToString();
l.Name = ins.No;
newItems.Add(l);
}
}
} foreach (var item in newItems)
{
items.Add(item);
} var listDto = new ListResultDto<RecordBookListDto>(items);
return listDto;

最新文章

  1. 【Java每日一题】20170105
  2. HTML5之废弃和更新的元素与属性
  3. Java中正则表达式的使用
  4. 制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)
  5. HDOJ/HDU 2549 壮志难酬(取小数点后几位~)
  6. nyoj 36 最长公共子序列【LCS模板】
  7. MaraDNS与DeadWood一起配置为本地机器提供小型化DNS服务
  8. HTML 5 与HTML 4 的区别
  9. 精通JavaScipt第二版笔记——特性、函数和对象
  10. 【Java算法學習】斐波那契數列問題-兔子產子經典問題
  11. idea 上传代码到 gitee
  12. Vmware ESXi 的虚拟机的开机自启动
  13. 自学Linux Shell16.4-在命令行上使用函数
  14. seaborn画热力图注意的几点问题
  15. nodeclub config
  16. 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: GetLzdtArticleResult。InnerException 消息是“反序列化对象 属于类型 lzdt.DTO.Dtolzdt[] 时出现错误。读取 XML 数据时,超出最大
  17. 洛谷P3763 [TJOI2017]DNA(后缀数组 RMQ)
  18. Docker解决没有vi、vim等命令
  19. Python:静态方法、类方法、实例方法
  20. java应用高cpu占用

热门文章

  1. php数据结构课程---3、队列(队列实现方法)
  2. phalcon: 按年分表的model怎么建?table2017,table2018...相同名的分表模型怎么建
  3. 分享知识-快乐自己:解决 Maven 无法下载 fastdfs-client-java 依赖。
  4. php-fpm进程内存泄漏
  5. SQL-INSERT INTO用法
  6. 【leetcode刷题笔记】Longest Consecutive Sequence
  7. RTP 打包H264与AAC
  8. luogu1801 黑匣子
  9. bzoj 2823: [AHOI2012]信号塔 最小圆覆盖
  10. 在屏幕中间显示,按ESC键后改变字符的颜色