如果用foreach,会造成被遍历的集合更改后带来异常问题。 方法一:用for循环可有效的解决这个问题。 for(int i=0;i<List.Count;i++) { if(条件是真) { List.Remove(List[i]); i--; } } 方法二:再用另外的一个List集合存储要删除的对象。 List<T> newlists=new List<T>(); foreach(T t in List) { lists.add(t); } foreach(T t in newlists) { List.Remove(t); }