2016-08-05 5 views
0

나는 식당에 대한 디렉토리를 만들고 싶다. 검색은 세 가지 조건을 기반으로한다. 내가 가진 문제는 typecuisine을 사용하는 세 번째 where 절을 추가하는 것이다. 좋은 my entitywhere 절이 많은 관계에 추가됨

var query = db.Restaurants.AsQueryable(); 

if (!string.IsNullOrEmpty(Name)) 
    query = query.Where(c => c.Nom.Contains(Name)); 

if (RegionId != Guid.Empty) 
    query = query.Where(c => c.RegionId == RegionId); 

//how to get typecuisine ID from table Restaurant instead it's only in table TypeCuisine 


if (typeId != Guid.Empty) 
    query = query.Where(tc=> tc.TypeCuisines.Where(r=>r.TypeCuisineId == typeId)); 

return query.ToList(); 
+0

'query.Where (TC => tc.TypeCuisines.Any (R => r.TypeCuisineId == 유형 ID));' –

답변

0

있는 .Wherebool의 반환 유형을 기대하고 당신은 IEnumerable을 의미 내부 Where의 결과를 반환한다.

누락 된 내용은 Where 대신 .Any() 함수입니다.

var query = db.Restaurants.AsQueryable(); 

if (!string.IsNullOrEmpty(Name)) 
    query = query.Where(c => c.Nom.Contains(Name)); 

if (RegionId != Guid.Empty) 
    query = query.Where(c => c.RegionId == RegionId); 

if (typeId != Guid.Empty) 
    query = query.Where(tc=> tc.TypeCuisines.Any(r => r.TypeCuisineId == typeId)); 

return query.ToList(); 
+0

당신에게 감사합니다 아주 많이 작동합니다! –