集合已修改;可能无法执行枚举操作。
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#