将查询限制为今天创建的行(Linq-to-Entities,Datetime)

时间:2014-05-05 18:36:56

标签: linq linq-to-entities

所以我得到了这个问题:

var query = from r in context.Cars
            let h = context.CarHistories
                           .Where(u => r.ID == u.CarID)
                           .Where(u => u.EventID == intEventID)
                           .OrderByDescending(u => u.CreatedDate)
                           .FirstOrDefault()
            select new RefundListItem()
            {
                ID = r.ID,
                VendorID = r.VendorID,
                RecipientName = r.RecipientName,
                MostRecentSubmittedName = h.CreatedName,
                CreatedDate = h.CreatedDate,
            };

稍后,我将此添加到查询中,因为我只想要今天创建的行:

DateTime today = DateTime.Today;
query.Where(u => Convert.ToDateTime(u.CreatedDate) >= today);

由于某种原因,这个where语句根本不会影响查询。查询仍会返回从前几天创建的项目,而不是将它们仅限制为今天创建的行。

我也试过这个,但它也不起作用:

DateTime today = DateTime.Today.Date;
query.Where(u => Convert.ToDateTime(u.CreatedDate.Date) >= today.Date);

我使用的是Linq-to-Entities(MVC 4,EF 4)。

1 个答案:

答案 0 :(得分:3)

Where不会修改query实例,它会返回添加了附加条件的新实例。将其分配回query以使其正常工作:

query = query.Where(u => Convert.ToDateTime(u.CreatedDate.Date) >= today.Date);