2014-03-27 37 views

回答

4

Enumerable.All返回一個布爾值,該值指示所討論的所有元素是否滿足由謂詞表達的條件。

Enumerable.Where返回一個通用的IEnumerable集合,它只包含滿足上述條件的項目。

我沒有看到從這些LINQ函數返回的結果之間有任何共同之處 - 一個是bool,另一個是集合。是的,它們在語法上相似,但在完全不同的情況下使用。

一個簡單的例子: 比方說,你有一個int列表:

列表sampleList =新列表{3,4,6,9};

如果運行

sampleList.All(v => v % 3 == 0); 

,因爲4不滿足條件,你會得到錯誤的。

如果運行

sampleList.Where(V => v%的3 == 0);

,您將收到一條的IEnumerable包含滿足條件的值:3,6和9/

+0

哦,真不錯,我在想什麼? :)當我發佈這個時,一定是半睡半醒! – ekolis

5

items.Where - 根據條件過濾並返回過濾對象的集合。

items.All - 返回true集合中的所有對象是否滿足條件,否則返回false

看起來不完全一樣的東西嗎?

8

Where<T>返回IEnumerable<T>並作爲您的收藏一個過濾器:

Enumerable.Where方法

過濾基於謂詞值序列。

在你的情況下,它返回Foo屬性等於"bar"的所有元素。


All<T>返回bool,只是檢查,如果您的集合中的所有元素滿足給定謂詞:

Enumerable.All方法

確定序列中的所有元素是否滿足條件。

在你的情況下,它返回true當所有元素的Foo屬性等於"bar",否則false