2011-09-19 35 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的最大值返回一組問題,如下所述。我期望從上面的數據中得到的結果將包括Sequence排序的第2,4行。

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

請告訴我你的查詢問題? – Magnus

回答

0

MAX()正確翻譯在LINQ到SQL

嘗試

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);