Использование Max в LINQ to SQL - PullRequest
       23

Использование Max в LINQ to SQL

0 голосов
/ 20 сентября 2011

Проблема с использованием Max в предложении where в LINQ to SQL.Данные ниже:

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

Мне нужно вернуть группу вопросов, основанных на максимуме идентификатора версии, как указано ниже.Результат, который я ожидаю из приведенных выше данных, будет включать строки 2, 4 и 6, упорядоченные по Sequence.

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

1 Ответ

0 голосов
/ 20 сентября 2011

Макс () правильно переводится в linq-to-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);
...