如何使用Any()而不是RemoveAll()来排除列表项



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

最新更新