c#:从List中删除项目并继续Foreach循环

时间:2017-11-21 05:59:33

标签: c# list foreach invalidoperationexception

抛出此例外的问题:

  

System.InvalidOperationException:'收集已修改;   枚举操作可能无法执行。'

foreach(var string in list)
{ if condition true;
remove element from list;
work for remaining list items; // Exception

你们中有谁有解决这个问题的方法吗?

不想回答如下:

  
    

将项目移动到新列表中,然后一起删除所有项目。     用于或其他东西

  

虚拟代码:

public List<Tuple<int, string, string>> OpM(List<Tuple<int, string, string>> tuple)
        {
        foreach (var v in tuple)
        {
        cal = (swl * 100) / iwl;
                        if (cal <= sf)
                        {
                            st = st + " " + v.Item3;
                            Console.WriteLine("Added: {0}", st);
                            tuple.Remove(v);
        }
    else {continue;}
        }
}
return tuple;
}
  

非常感谢你!我得到了答案。

foreach (var v in tuple.ToList())
       { tuple.Remove(v);  }

但我也想知道如何使用这两种方式:

1- List.Distinct()
2- LINQ: list = list.Where(a => !condition);

0 个答案:

没有答案