2015-12-01 29 views
-1

返回true請看下面的代碼:。所有的Linq空收集

static void Main(string[] args) 
{ 
    List<string> items = new List<string>(); 
    string result = null; 

    if(items.All(o => o == "ABC")) 
    { 
     result = "All"; 
    } 
    else if(items.Any(o => o == "XYZ")) 
    { 
     result = "Any"; 
    } 

    Console.WriteLine(result); 
    Console.Read(); 
} 

這版畫 「全部」。

爲什麼一個列表滿足 「所有」 的條件,其中o == "ABC"

+2

看看源代碼[here](http://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,be4bfd025bd2724c,references) –

+0

_Why_是主觀的,不是嗎?杯子是半滿的還是半空的? 「全部」滿足你的條件,因爲沒有。如果列表爲空,您可以隨時檢查。 –

+0

我認爲你需要以相反的方式思考它。 '.All(...)'是'true',只要不存在'false'。如果列表爲空,則不存在「false」,因此它是「true」。 – Enigmativity

回答

5

根據MSDN: -

Enumerable.All

返回如果源序列的每個元素如果序列爲空,則通過指定謂詞中的 測試或; 否則爲false。

因此,在你的情況下,因爲items是一個空集合,它返回true。