0

如何使用 Lambda 表达式(实体框架或微 ORM)使用以下查询?

    SELECT a.RestaurantID
        ,MAX(a.EventDate) LastPeriodCloseDate
    FROM (
        SELECT RestaurantID
            ,EventType
            ,EventDate
        FROM SystemCalendar
        WHERE EventType = 'P'
       ) a
   GROUP BY RestaurantID
   HAVING MAX(a.EventDate) BETWEEN '2014-10-31'
         AND '2015-03-31'
4

1 回答 1

0

您的内部选择不是必需的。你可以这样做:

DateTime start = new DateTime(2014, 10, 31);
DateTime end = new DateTime(2015, 3, 31);

var query = _db.SystemCalendar
               .Where(x => x.EventType == "P")
               .GroupBy(x => x.RestaurantID, 
                        x => new 
                        { 
                          RestaurantID = x.Key, 
                          LastPeriodCloseDate = x.Max(y => y.EventDate) 
                        })
               .Where(x => x.LastPeriodCloseDate >= start && 
                           x.LastPeriodCloseDate < end);
于 2014-10-20T18:46:19.700 回答