2011-09-19 4 views
0

LINQ to SQL의 where 절에 Max를 사용하는 데 문제가 있습니다. 아래 데이터 :LINQ to SQL의 Max 사용

QID, Question,  TypeID, Disable, VersionID, Sequence 
1  Who's on 1st 1   False 1   1 
2  Who's on 1st 1   False 2   1 
3  What's on 2nd 1   False 1   2 
4  What's on 2nd 1   False 2   2 
5  I don't know 1   False 1   3 
6  I don't know 1   False 2   3 

아래와 같이 VersionID의 최대 값을 기준으로 질문 그룹을 반환해야합니다. 위 데이터에서 예상 한 결과는 행 2, 4 & 6이 순서로 정렬 된 것을 포함합니다.

IEnumerable<QUESTION> questions = 
    (from q in dataContext.QUESTIONs 
    where q.TypeID == Convert.ToInt16(ddlType.SelectedValue) 
    && (q.Disable == null || q.bDisable == false) 
    && (q.VersionID == dataContext.QUESTIONs.Max(q.nVersionID)) 
    orderby q.Sequence ascending 
    select q); 
+0

시도 LINQ - 투 - SQL

에서 제대로 번역 뭐죠 쿼리의 문제? – Magnus

답변

0

최대()

IEnumerable<QUESTION> questions = (from q in dataContext.QUESTIONs 
         let maxVersion = dataContext.QUESTIONs.Max(q.nVersionID) 
         where q.TypeID ==  Convert.ToInt16(ddlType.SelectedValue) 
         && (q.Disable == null || q.bDisable == false) 
         && (q.VersionID == maxVersion) 
         orderby q.Sequence ascending 
         select q);