2013-05-14 3 views
0

У меня есть DataTable с 5 столбцами с типом int, string и DateTime. Я написал запрос LINQ для фильтрации записей по дате. Как мне получить данные сегодня и вчера?Как запросить записи по дате

var Data = _dtAll.AsEnumerable() 
      .Where(datas => datas.Field<DateTime>("Date") == DateTime.Now.Date) 
      .Select(datas => new { ---}) 

У меня нет записей. Моя запись - 14/05/2013 10:00. Мне не нужно запрашивать по времени, мне нужно запрашивать только по дате. Любая помощь appriciated.

ответ

0

Вы используете ==, который будет соответствовать только 14/05/2013 12:22 (время размещения)

Использование:

var Data = _dtAll.AsEnumerable().Where(datas => datas.Field("Date") <= DateTime.Now.Date).Select(datas => new { ---}) 

Какой будет получить любую дату, до 12:22 или использовать && и указать другое условие, такие как:

var Data = _dtAll.AsEnumerable().Where(datas => datas.Field("Date") <= DateTime.Now.Date && datas.Field("Date") >= '2013-05-14 09:00').Select(datas => new { ---}) 

Примечание: Вы можете также использовать DateTime.Now.AddHours(-5), а не жёстко 2013-05-14

+0

Спасибо, Понял ** Для Сегодня:. ** вар Data = _dtAll.AsEnumerable() Где (Данные => datas.Field ("Дата")> = DateTime.Now.AddDays (-1) && datas.Field («Дата») <= DateTime.Now.AddDays (1)). Выберите (datas => new {-}); ** Для Вчера: ** вар Data = _dtAll.AsEnumerable() Где (Данные => datas.Field ("Дата")> = DateTime.Now.AddDays (-2) && datas.Field . («Дата») <= DateTime.Now.AddDays (-1)). Выберите (datas => new {-}); – charan

1

Даты вчера и сегодня являются даты между полуночи вчера (в том числе) и в полночь завтра (за исключением):

var upperBound = DateTime.Today.AddDays(1); 
var lowerBound = DateTime.Today.AddDays(-1); 

var Data = _dtAll.AsEnumerable() 
      .Where(datas => datas.Field<DateTime>("Date") < upperBound) 
         && datas.Field<DateTime>("Date") >= lowerBound) 
      .Select(datas => new { ---}) 
0

Вы пробовали это ?:

var Data = from datas in _dtAll.AsEnumerable() 
     let diff = (DateTime.Now.Date - datas.Field<DateTime>("Date").Date) 
     where diff.Days >= 0 && diff.Days <= 1 
     select new { ---} 
Смежные вопросы