2016-12-05 8 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, и я хочу, чтобы проверить в, если условие, существует ли AdditionalProductDetail чей ServiceType = "Phone". Является ли это возможным?

//if(getAdditionalProductCatalogResponse.AdditionalProductDetail.Where) 

Возможно ли это?

+1

'.Any (lamdaHere)'. –

+0

@ DanielA.White Спасибо –

+2

Примечание: Не имеет смысла иметь класс под названием «GetAdditionalProductCatalogResponse». Это имя больше похоже на метод. Названия классов должны быть существительным фразой – SQLSuperHero

ответ

3

Предложение на IEnumerableWhere возвращает фильтрованную IEnumerable, которая не является логическим выражением - не может быть использовано в if заявления. Так что вам нужно сделать, это проверить, есть ли any элементы в этой коллекции - использование метода Any:

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

который возвращает истина/ложь.

Там более короткий синтаксис, используя Any() перегрузку, которая принимает предикат и делает то, где сам:

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