У меня есть таблица с полем datetime2, и мне нужно извлечь из нее все строки, где сегодня находится дата. Довольно странно (на мой взгляд, но я уверен, что для этого есть веская причина), если я сделаю:
MyTable.Where(t => t.Date == DateTime.Today).ToList()
ничего не возвращается, хотя есть записи с сегодняшней датой.
Что мне здесь не хватает? Я думал, что datetime2 позволяет вам делать такие запросы вместо того, чтобы указывать таймфрейм больше и меньше?
Редактировать
Я пытался использовать часть .Date представления DateTime2 в Linq to SQL:
MyTable.Where(t => t.Date.Date == DateTime.Today).ToList()
но я все еще ничего не получаю. Тем не менее, в моей базе данных есть строки со значением 2011-08-05 00:00:00.0000000
, что явно сегодня.
Редактировать снова
Я выполнил запрос:
List<string> dates = MyTable.Select(t => t.Date.Date.ToString()).ToList();
и я получаю результаты типа 2011-08-05
, так что эта часть, очевидно, работает.
Однако, когда я запускаю
DateTime.Today.Date.ToString()
Я получаю 08/05/2011 00:00:00
. Может ли добавление этой части времени быть причиной? Как бы я это убрал?
Редактировать 3
Получил работу, используя код:
MyTable.Where(t => t.Date.Date.ToString() == DateTime.Today.Date.ToString("yyyy-dd-MM")).ToList();
Это кажется хакерским (преобразование в строку перед сравнением) и, конечно, должен быть более чистый способ?