在Java中,我可以使用http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Iterator.html#remove()Iterator.remove()方法迭代集合并从中删除一些对象.
这非常自然而且很自然.就像你正在寻找冰箱里的食物,扔掉过期日期的食物.如何在c#中做同样的事情?
我希望iterate和clean-up收集在同一个循环中.
有几个相关的问题,例如如何迭代和更新列表但是我仍然无法在c#中找到此操作的完全重复
如果你正在使用List<T>,有一个方便的方法来执行此操作(RemoveAll),它将删除与谓词匹配的所有元素(表示为委托).例如:
List<Person> people = ...;
people.RemoveAll(person => person.Age < 18);
// Just the adults left now...
Run Code Online (Sandbox Code Playgroud)
这比向后迭代更简单,IMO.
当然,如果您乐意创建新列表,可以使用LINQ:
var adults = people.Where(person => person.Age >= 18).ToList();
Run Code Online (Sandbox Code Playgroud)