foreach循环的时候,表达式被改变导致。
开始看到其他同事写的代码,foreach
List<Guid> deplist = _IService.GetList(m => m.ID == ID && m.IsDelete == false).Select(s => s.ID).ToList();
//循环数据信息
foreach (Guid ID in _IService.GetList(m => m.ID == ID && m.IsDelete == false).Select(s => s.ID).ToList())
{
//添加数据信息
deplist.AddRange(_IService.GetParent(ID, true).Select(s => s.ParentID));
}
同一个查询,写了2次,然后我去手贱改了下,运行的时候就GG了。。
List<Guid> deplist = _IService.GetList(m => m.ID == ID && m.IsDelete == false).Select(s => s.ID).ToList();
//循环数据信息
foreach (Guid ID in deplist )
{
//添加数据信息
deplist.AddRange(_IService.GetParent(ID, true).Select(s => s.ParentID));
}
结果就出这个问题了,哎。。。看了会结果发现这个deplist在循环的时候被改变了。
List<Guid> deplistByID = _IService.GetList(m => m.ID == ID && m.IsDelete == false, s => s.ID);
List<Guid> deplist = new List<Guid>();
deplist.AddRange(deplistByID);
foreach (Guid ID in deplistByID)
{
//添加数据信息
deplist.AddRange(_IService.GetParent(ID, true).Select(s => s.ParentID));
}
foreach循环中列表改变引发的问题

博客讲述了在使用foreach循环时遇到的问题。原代码中同一查询写了两次,修改后运行出错,原因是在循环过程中列表deplist被改变。最后给出了一种新的代码写法,将查询结果先存于deplistByID,再添加到deplist中进行循环。
710

被折叠的 条评论
为什么被折叠?



