2012-06-29 2 views
3

У меня есть SQL-запрос, как этотMAX в тех случаях, когда пункт в Entity Framework

SELECT WI.[WorkItemID] ,[WorkItemNumber] ,[ToDate]  
FROM [WorkItem] AS WI INNER JOIN [WorkItemTrack] AS WT on WI.WorkItemID=WT.WorkItemID 
WHERE MAX([ToDate]) BETWEEN @StartDate AND @EndDate 

и corresponing Entity Framework Query является

workItems = from wi in workItems.Where(p => p.IsActive) 
      join wt in entityCollection.WorkItemTrack on wi.WorkItemID equals wt.WorkItem.WorkItemID 
      where wt.ToDate >= fromdate && wt.ToDate <= todate 
      select wi; 

Здесь я не могу использовать MAX для wt.ToDate в Enitity Framework Query

Пожалуйста, помогите мне

+2

Каково использование MAX в разделе where? Не имеет смысла – fenix2222

ответ

1

Макса в котором положение не должно работать.

«Агрегат может не отображаться в предложении WHERE, если оно не находится в подзапроса, содержащегося в пункте HAVING или списка выбора, а столбец быть агрегированы является внешней ссылкой.»

Но если вы хотите получить наибольший результат на основе определенного столбца, попробуйте добавить порядок по указанному столбцу, а затем возьмите верхний результат этого набора.

1

вы пробовали SqlServer.Max() метод. это агрегатные методы, которые вы можете использовать

Пример

SELECT VALUE SqlServer.MAX(p.ListPrice) 
FROM AdventureWorksEntities.Product as p 
+0

Нужна она в Entity Framwork – Somashekhar

Смежные вопросы