如何使用 Any() 而不是 RemoveAll() 来排除列表项?
How do I use Any() instead of RemoveAll() to exclude list items?
ListWithAllItems
包含两种类型的项目:我想要的 select 和我不需要的。
listForExcluding
包含我应该排除的项目:
List<string> listForExcluding = ...;
所以我用两个字符串来做:
List<string> x = ListWithAllItems.ToList();
x.RemoveAll(p => listForExcluding.Any(itemForExclude => itemForExclude == p));
如何使用 Any()
而不是 RemoveAll()
来获得一行查询?
Any
这里没有意义,直接用Except
:
var filtered = ListWithAllItems.Except(listForExcluding);
ToList
如果你真的需要最后一个列表,否则不要无缘无故地实现IEnumerables(导致额外的枚举)。
如果出于某种原因你真的想要 RemoveAll
版本,请使用 Contains
(这也是使用 Where
的方法):
x.RemoveAll(p => listForExcluding.Contains(p));
还有许多其他有效行...但认真地使用 Except
ListWithAllItems
包含两种类型的项目:我想要的 select 和我不需要的。
listForExcluding
包含我应该排除的项目:
List<string> listForExcluding = ...;
所以我用两个字符串来做:
List<string> x = ListWithAllItems.ToList();
x.RemoveAll(p => listForExcluding.Any(itemForExclude => itemForExclude == p));
如何使用 Any()
而不是 RemoveAll()
来获得一行查询?
Any
这里没有意义,直接用Except
:
var filtered = ListWithAllItems.Except(listForExcluding);
ToList
如果你真的需要最后一个列表,否则不要无缘无故地实现IEnumerables(导致额外的枚举)。
如果出于某种原因你真的想要 RemoveAll
版本,请使用 Contains
(这也是使用 Where
的方法):
x.RemoveAll(p => listForExcluding.Contains(p));
还有许多其他有效行...但认真地使用 Except