您当前的位置:同创IT编程技术.Net 技术C# → 文章信息

集合已修改;可能无法执行枚举操作。

遍历到第二层就出这问题了。privatestaticvoidCreateTree(TreeNodeCollectionNds,intparentID,TList<HROrganization>list){TreeNodetmpNd;list.RemoveFilter();list.Filter="arentID="parentID.ToString();foreach(HROrganizationhroinlist){tmpNd=newTreeNode();tmpNd.Name=hro.Depart_ID.ToString();tmpNd.Text=hro.Depart_Name.ToString();tmpNd.Tag=hro;Nds.Add(tmpNd);CreateTree(Nds[Nds.Count-1].Nodes,Convert.ToInt32(hro.Depart_ID.ToString()),list);}}
答:......
答:在对list进行循环的时候又对list进行了修改,这是不应该的。换个思路来处理这个问题。比如先把这个列表的内容复制一份,对这一份列表循环,然后对List进行修改。
答:使用foreach时不能改变集合的数据举例来简单的说就是让你数一个药瓶子里到底有多少药片?可是你一边数一边有人又在往里添那么永远都数不清楚
答:只要list.count==0时就出这问题了.我冤啊,我只是list.Filter="arentID="parentID.ToString();并且为何list.count==0时才出这问题。
答:for(inti=0;i<list.count;i){foreach(HROrganizationhroinlist){tmpNd=newTreeNode();tmpNd.Name=hro.Depart_ID.ToString();tmpNd.Text=hro.Depart_Name.ToString();tmpNd.Tag=hro;Nds.Add(tmpNd);CreateTree(Nds[Nds.Count-1].Nodes,Convert.ToInt32(hro.Depart_ID.ToString()),list);list.romove(hro);break;}}
答:为何list.count=0时还会去foreach?
答:这个是使用foreach的典型的问题。foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等)。要避免这个问题,就应该使用for循环。
答:判断下list.count=0
答:果果:foreach中加break,这样一写,等同于只用for.出来的tree,从根节点开始,都只有一个子节点。凤车车:要怎么改。另外筛选也算是修改吗,那为什么要等到list.Count==0时才出错啊。
答:是递归循环啊。
答:list.Count!=判断放在那都会有问题啊
答:LZTList这个东东有点像DataViewforeach内部使用枚举器迭代,而这个迭代器在一开始的时候就返回了,它的迭代次数已经确定了,但是,你后面又更新了集合,导致之前的迭代次数不一致了当使用foreach的时候,集合只能处于只读状态,否则产生不可以预期的效果
答:list.Count!=判断放在那都会有问题啊=======用list.Count无计于事考虑用for/while按索引读取,并动态按需改变索引值况且是递归,得好好分析下要不是,就得这样简单些,list.Filter="arentID="parentID.ToString();foreach(HROrganizationhroinlist)》》》HROrganization[]hroArr=list.Select("arentID="parentID.ToString());//假设提供了Select方法,这样你后续修改list不会改变hroArr了foreach(HROrganizationhroinhroArr)
答:先去吃饭了,一会儿试试Jinglecat说的。是不是在foreach之前把filter出来的集合赋给一个新的TList<HROraganization>??"你后面又更新了集合",我还是不理解啊,这个更新是只什么?我只是filter而已。
答:我没修改过list,只是用了list.filter。
答:没办法遍历了吗
《中华人民共和国信息产业部ICP证备案》:桂ICP备06003915号 
Copyright © 2006-2008 tctl.com.cn. All Rights Reserved .

mail:474302153#qq.com(#替换为@)