当前位置:编程学习 > C#/ASP.NET >>

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


                    foreach (YZZ.Model.View_Type_Article a in list)
                    {
                        if (a.a_type.ToString().Split('★')[1] == (1).ToString())
                        {

                            list.Remove(a);
                        }
                    }


怎么改呀。 --------------------编程问答-------------------- 没人吗 --------------------编程问答-------------------- 不要对你操作的列表进行 删除项操作,要不会出错的,你那么些就是有问题的,没有你那么写的 --------------------编程问答-------------------- 这类的错误,可以用for循环代替foreach就可以解决,不知道你的list是什么类型的?如果是LinkedList,可以这样处理:

LinkedListNode<YZZ.Model.View_Type_Article> rScan=list.First;
for(;rScan!=null;rScan=rScan.Next)
{
   a=rScan.Value;
                        if (a.a_type.ToString().Split('★')[1] == (1).ToString())                        {                             list.Remove(a);                        }
}
--------------------编程问答--------------------
  foreach (YZZ.Model.View_Type_Article a in list)
            { 
                if (a.a_type.ToString().Split('★')[1] != "1") 
                { 
                    //执行你要的操作
                }
            }

List<YZZ.Model.View_Type_Article> list = new List<YZZ.Model.View_Type_Article>();
 foreach (YZZ.Model.View_Type_Article a in list)
            { 
                if (a.a_type.ToString().Split('★')[1] =="1") 
                { 
                  list.add(a);
                }
            }


            


两个方法都可以。 --------------------编程问答-------------------- 原来是你Remove了,这样上面程序是错的,一般循环里不要remove,如果一定要remove,可以这样:

LinkedListNode<YZZ.Model.View_Type_Article> rScan=list.First;
 for(;rScan!=null;)
 {
    a=rScan.Value;
    if (a.a_type.ToString().Split('★')[1] == (1).ToString())  
 {
       LinkedListNode<YZZ.Model.View_Type_Article> rToRemove=rScan;
                             rScan=rScan.Next;
                             list.Remove(rToRemove);                        
                             continue;
}
 rScan=rScan.Next;
}
--------------------编程问答--------------------


            for(int i=0;i<list.Count;i++)
            { 
                if (list[i].a_type.ToString().Split('★')[1] ="1") 
                {
                    list.Remove(i);
                }
            }




这是楼上的说法,

但是不能保证数据是不是会出错。因为删除一个索引就变了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,