2013-04-10 3 views
0

나는 다음과 같은 설정을 가지고 가입 할 수 있습니다. 표 Shoes에는 IDStatus 열이 있습니다.LINQ 쿼리

나는 하나의 인자 -을 취하는 방법을 가지고 있으며, 목표는 인자로 전달 된 것과 같은 을 가진 ShoeAreas에 레코드가 있는지를 결정하는 것이다. 그리고 만약 그 신발이 아마도 Shoes with Status` = Production에서 나온 신발과 관련이 있다면 그러한 기록 (또는 기록)이 존재한다면.

나는이 시도 :

return shoeService.All(). 
       Join(shoeAreaService.All(), 
       s => s.ID, 
       sa => sa.ShoeId, 
       (s, sa) => (sa.MaterialId == matId)). 
       Any(s => (s.Status == (byte)EntityStatusProd.Production))); 

을하지만 난 Any.. 라인에 오류가 } expected 말을 얻을이 내가 그것을 구문 문제 나 쿼리가있는 경우 나 의심이 너무 쓰기 내 두 번째 Linq에 엔티티에 대한 질의입니다 잘못했다.

+1

을 당신은 조인 대신 탐색 속성을 사용할 수 있어야합니다. – MarcinJuraszek

답변

1

Join 방법 (값 sa.MaterialId == matId)에서 IEnumerable<bool>을 반환합니다. 당신이 시도 할 수

return shoeService.All() 
      .Join(shoeAreaService.All(), 
       s => s.ID, 
       sa => sa.ShoeId, 
       (s, sa) => new { s, sa }) // here 
      .Any(x => (x.sa.MaterialId == matId) && 
        (x.s.Status == (byte)EntityStatusProd.Production))); 
+0

감사합니다. 답을 사용하십시오. – Leron

1

: 대신에 모두 참여 단체를 개최한다 익명 형식 만들기 (LINQ) 적절한 기관과

from shoe in Shoes 
join shoeArea in ShoesArea on shoe.ID equals shoeArea.ShoeID 
where shoeArea.MeterialID == matID && shoe.Status == (byte)EntityStatusProd.Production 
select new {shoe.ID,shoe.Status}; 
1
return shoeService.All().Any(s => shoeAreaService.All() 
           .Any(sa => sa.MaterialId == matId 
             && s.Id == sa.ShoeId) 
          && s.Status == (byte)EntityStatusProd.Production); 
+1

감사합니다. – Leron