MAX在实体框架的Where子句中

时间:2012-06-29 05:33:05

标签: c# asp.net entity-framework

我有像这样的SQL查询

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

和相应的实体框架查询

 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

请帮帮我

2 个答案:

答案 0 :(得分:1)

您是否尝试过SqlServer.Max()方法。这些是您可以使用的聚合方法

实施例

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

答案 1 :(得分:1)

where子句中的最大值不应该起作用。

  

&#34;聚合可能不会出现在WHERE子句中,除非它在a中   包含在HAVING子句或选择列表中的子查询以及列   被聚合是一个外部参考。&#34;

但是,如果您想要基于特定列的最高结果,请尝试按所述列添加订单,然后获取该列的最高结果。