2013-11-22 8 views
2

나는이 기존 SQL 문이 :Linq에 람다 식

내가 LINQ - 투 - SQL을 사용하여 변환 할,하지만 난 방법을 알아낼 수 없습니다 해요
Select Count(ordid),isnull(prcsts,'NOT STARTED') 
from lwp 
where lwp in(Select max(Id) from lwp group by ordid) 
group by prcsts 

하위 쿼리에서 group by 표현식을 처리하십시오. 어떻게해야합니까?

저는 lwp 목록을 얻는 방법이있는 Entity Framework를 사용하고 있습니다. 나는 그것의 일부만을했다.

Entitydb.lwpmethod 
     .GetList 
     .Where(Function(F) F.ID = **Max(Function(O) O.ordid**) 
     .GroupBy(Function(F) F.prcsts) 
     .Select(Function(F) New With {.A = F.Count, .B = F.Key}) 
     .ToList 

최대 기능에 하위 쿼리로 그룹을 쓸 수 없습니다.

+0

'lwp in (max (id))'? 그게 효과가있을거야? – MarcinJuraszek

답변

0

먼저 in이 아니며, max()은 단일 요소를 반환하므로 =입니다. 또한 귀하의 SQL 쿼리 where 절에 lwp있다, 당신은 아마 id을 입력. 이를 염두에두고, 당신이 원하는 것은 다음과 같습니다 :

.Where(row=>row.ID=Entitydb.lwpmethod.GetList() 
            .Where(r=>r.ordid=row.ordid) 
            .Max(r=>r.ID)) 

C# 코드.

마지막 행을 선택하는 것처럼 보입니다. 왜 그냥 id을 자손으로 정렬하고 첫 번째 요소를 가져 오는 것이 좋을까요?

+0

고마워요, 나는 혼란스럽고 "="에 대해서 혼란 스러웠습니다. 가장 좋은 방법은 첫 번째 ID를 사용하는 것입니다. 나는 그것을 시도 할 것이다. 조언 해 주셔서 감사드립니다. – tinku99