如何使用 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