Linq All Vs Foreach

时间:2013-09-25 16:48:49

标签: c# .net linq

您好我正在尝试理解Linq中All和ForEach之间的差异。

我知道All用于检查条件,如果谓词满足则返回bool。但是,如果我在谓词中有一个任务,它就可以正常工作并且不会抱怨。

在这种情况下,ForEach的用途是什么?或者在什么情况下使用ForEach

可能有点傻但需要知道重要性

1 个答案:

答案 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