您好我正在尝试理解Linq中All和ForEach之间的差异。
我知道All用于检查条件,如果谓词满足则返回bool。但是,如果我在谓词中有一个任务,它就可以正常工作并且不会抱怨。
在这种情况下,ForEach的用途是什么?或者在什么情况下使用ForEach
可能有点傻但需要知道重要性
答案 0 :(得分:13)
LINQ中实际上没有ForEach
(故意)。有一个List<T>.ForEach
方法,它对列表中的每个对象运行一个操作。
主要区别是All
是一个过滤器 - 如果所有项都与谓词匹配,则返回true。存在List<T>.ForEach
以产生副作用 - 您对列表中的每个项目运行一些操作。
一般情况下,我会避免使用LINQ导致副作用的查询(即:不在查询中执行操作),而是将它们放入foreach
循环中。这使得意图非常清楚,这有助于维护。
请注意,List<T>.ForEach
实际上是从WinRT框架中删除的,因为它确实没有增加很多价值。 Eric Lippert使用foreach
代替List<T>.ForEach
写了great article on the subject。