2016-12-05 40 views
0

我有以下類別:Lambda表達式在IF條件

public class GetAdditionalProductCatalogResponse 
{ 
    public List<AdditionalProductDetail> AdditionalProductDetail { get; set; } 
} 

public class AdditionalProductDetail 
{ 
    public string Type { get; set; } 
    public string ServiceType { get; set; } 
    public List<AdditionalProduct> AdditionalProduct { get; set; } 
} 

我有一個想GetAdditionalProductCatalogResponse對象,我想在if條件來檢查AdditionalProductDetail是否存在,其ServiceType = "Phone"。可能嗎?

//if(getAdditionalProductCatalogResponse.AdditionalProductDetail.Where) 

這可能嗎?

+1

'。任何(lamdaHere)'。 –

+0

@ DanielA.White謝謝 –

+2

注意: 有一個名爲「GetAdditionalProductCatalogResponse」的類沒有任何意義。這個名字聽起來更像是一種方法。類名應該是名詞短語 – SQLSuperHero

回答

3

IEnumerable上的Where子句返回過濾IEnumerable,它不是布爾表達式 - 不能在if語句中使用。所以,你需要做的,如果有該集合中any項目是檢查什麼 - 使用Any方法:

if (products.AdditionalProductDetail.Where(...).Any()) 

返回真/假。

有一個更短的語法,使用Any()過載,這需要謂詞並執行其中本身:

if (products.AdditionalProductDetail.Any(...))