mr_*_*ond 1 c# linq list any removeall
ListWithAllItems 包含两种类型的项目:我想要选择的项目和我不选择的项目.
listForExcluding 包含我应该排除的项目:
List<string> listForExcluding = ...;
Run Code Online (Sandbox Code Playgroud)
所以我用两个字符串来做:
List<string> x = ListWithAllItems.ToList();
x.RemoveAll(p => listForExcluding.Any(itemForExclude => itemForExclude == p));
Run Code Online (Sandbox Code Playgroud)
如何使用Any()而不是RemoveAll()用一行获取此查询?
Any这里没有意义,只需使用Except:
var filtered = ListWithAllItems.Except(listForExcluding);
Run Code Online (Sandbox Code Playgroud)
ToList 如果你最后需要一个列表,否则不会无缘无故地实现IEnumerables(导致额外的枚举).
如果您RemoveAll因某种原因确实需要该版本,请使用Contains(这也是如何使用Where):
x.RemoveAll(p => listForExcluding.Contains(p));
Run Code Online (Sandbox Code Playgroud)
还有其他一些有效的线路......但是真的只需要去 Except
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |