ListWithAllItems
包含两种类型的项:一种是我想要选择的项,另一种是不想要的项。
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