Есть ли лучший (более хороший / эффективный) способ сделать это?
return View(db.Things
.Where(t => t.DateTimeObj.Month == DateTime.Today.Month
&& t.DateTimeObj.Day == DateTime.Today.Day)
.OrderByDescending(e => e.DateTimeObj)
.Take(num)
);
Следующие не работают (без объекта Date в LINQ to Entites).
Сегодняшние записи:
return View(db.Things
.Where(t => t.DateTimeObj.Date == DateTime.Today)
.OrderByDescending(e => e.DateTimeObj)
.Take(num)
);
Записи последних 24 часов:
return View(db.Things
.Where(t => t.DateTimeObj > DateTime.Today.AddHours(-24))
.OrderByDescending(e => e.DateTimeObj)
.Take(num)
);
Изменить:
Это, кажется, делает трюк:
return View(db.Things
.Where(t => t.DateTimeObj > SqlFunctions.DateAdd("dd", -1, DateTime.Now))
.OrderByDescending(e => e.DateTimeObj)
.Take(num)
);
Возможные ошибки, указанные Крисом Сэйнти:
- Только для SQL Server (возможно?)
- Вычисления даты задерживаются для выполнения SQL Server, так как предпочли предоставить предварительно вычисленную дату в переводе linq2sql.