删除列表中的项目

时间:2015-04-24 20:33:01

标签: c# list invalidoperationexception

我用c#编程。我正在尝试从List<>中删除某个项目,但是当我删除该项目时,我收到此异常错误:

  

发生了'System.InvalidOperationException'类型的异常   mscorlib.dll但未在用户代码中处理

     

其他信息:收集已修改;枚举操作可能无法执行。

这是我的代码:

foreach (Target t in targetList)
{
    if (t.CalculateDistance(t.EndX, t.EndY) <= 5)
    {
        targetList.Remove(t);
    }
}

我在第一行得到例外。为什么我看到这个错误?或者我该如何解决?

2 个答案:

答案 0 :(得分:12)

您遇到的问题是您无法修改通过它进行的收集。 您可以使用linq:

来解决这个问题
targetList.RemoveAll(t => t.CalculateDistance(t.EndX, t.EndY) <= 5);

答案 1 :(得分:1)

试试这个:

var needdelete = new List<Target>();

foreach (Target t in targetList)
{
    if (t.CalculateDistance(t.EndX, t.EndY) <= 5)
    {
        needdelete.Add(t);           
    }
}

targetlist.RemoveRange(needdelete);