我看到一个集合有一个.Remove()和一个.RemoveAt()方法。我想做这样的事情:
myObject.ChildList.RemoveWhere(r=>r.Name == "Joe");
实现这一目标的最佳方法是什么,除了单独执行,然后循环遍历每个项目并调用它们.Remove()
答案 0 :(得分:14)
List<T>
有RemoveAll
方法接受谓词。
myObject.ChildList.RemoveAll(r => r.Name == "Joe");
答案 1 :(得分:2)
您可以将RemoveWhere()
写为扩展方法。但是更改集合很棘手,有时效率很低。
为什么不创建新的收藏?
myObject.ChildList = myObject.ChildList.Except(
myObject.ChildList.Where(r=>r.Name == "Joe"));
答案 2 :(得分:0)
根据你需要条件的程度,你可以调用Where()但是反转你在RemoveWhere()中完成的所有逻辑。这可能会有点复杂,并且几乎可以肯定比RemoveWhere()类型函数效率低一些,但是如果你想做一些简单而懒惰的事情,那就可以了。