2013-09-25 40 views
7

嗨我想了解Linq中All和ForEach之間的區別。Linq全是Vs Foreach

我知道All用於檢查一個條件,並在謂詞滿足時返回bool。但是當我在謂詞裏面有一個賦值時,它可以正常工作,不會抱怨。

ForEach在這種情況下的用途是什麼?或者是什麼的情況下使得使用的ForEach

這可能是有點傻,但需要知道的意義

+4

'ForEach'不是LINQ的一部分。 LINQ是功能性的,因此它沒有像ForEach這樣的東西。 –

回答

13

實際上有一個在LINQ沒有ForEach(故意)。有一個方法,它在列表中的每個對象上運行一個操作。

主要區別是All是一個過濾器 - 如果所有項目都匹配謂詞,則返回true。 存在以產生副作用 - 您對列表中的每個項目執行一些操作。

一般來說,我會避免使用引起副作用的LINQ查詢(即:不要執行查詢中的操作),而是在之後將它們放入foreach循環中。這使得意圖非常清晰,這有助於可維護性。

請注意實際上是從WinRT框架中刪除的,因爲它確實沒有增加很多價值。 Eric Lippert寫了great article on the subject使用foreach而不是。

+0

我想知道LINQ有一個foreach的可能性,以及該文章的不錯鏈接 – Alan