Выберите Date из значения Datetime - PullRequest
3 голосов
/ 07 апреля 2011

Я хочу выбрать часть даты из значения DateTime, используя Linq to Sql или sql lambda.Вот мой сценарий.

dbContext.PurchaseOrders.Where(r => r.ReqDate == DateTime.Now).ToList();

Здесь ReqDate - поле DateTime.Я хочу выбрать все заказы на покупку на сегодня.

Ответы [ 7 ]

7 голосов
/ 07 апреля 2011

Это будет так же просто, как использование свойства Date в DateTime:

ОБНОВЛЕНИЕ: Из 3-й ошибки в комментариях я вижу, что ReqDate - это * Nullable<DateTime>. Попробуйте использовать свойство Value для доступа к базовому объекту DateTime:

dbContext.PurchaseOrders.Where(r => r.ReqDate.Value.Date == DateTime.Now.Date)
    .ToList();

EDIT

Кроме того, вы можете попробовать не очень красивый вариант:

dbContext.PurchaseOrders.Where(r => r.ReqDate.ToString("yyyy-MM-dd") == 
    DateTime.Now.ToString("yyyy-MM-dd"))
    .ToList();

Просто преобразуйте ваши DateTime объекты в строку, отформатированную так, чтобы она содержала только дату.

3 голосов
/ 24 мая 2011

У меня есть ответ, который вернет список. Я давно знаю, но нигде не мог найти решение.

Я надеюсь, что это спасет кого-то еще от разочарования. Я искал и искал, чтобы найти ответ на этот вопрос.

Он выполняет группировку по дате и времени, чтобы вернуть список дат без времени. В моем случае это была загрузка комбинированного списка дат на выбор.

      var mADates = from ta in db.AM_Assignments
                      orderby ta.Assignment_DTM 
                      group ta by ta.Assignment_DTM.Date; 

        List<DateTime> dtx = new List<DateTime>();

        foreach (var dt in mADates)
        {
            dtx.Add(Convert.ToDateTime(dt.Key.ToShortDateString()));
        }
        return dtx;
1 голос
/ 29 августа 2017

Есть некоторые функции LINQ2SQL, которые имитируют нативные функции SQL. Один из них - усечение времени от DateTime? или DateTimeOffset?.

var today = DateTime.Now.Date;
dbContext.PurchaseOrders.Where(r => DbFunctions.TruncateTime(r.ReqDate).Value == today).ToList();
1 голос
/ 07 апреля 2011

.Дата создает время 00:00:00, поэтому время не сравнивается

dbContext.PurchaseOrders.Where(r => r.ReqDate.Date == DateTime.Now.Date).ToList();
1 голос
/ 07 апреля 2011

попробуйте это:

dbContext.PurchaseOrders.Where(r => r.ReqDate.Date == DateTime.Today).ToList();
1 голос
/ 07 апреля 2011

Используйте метод вычитания.

dbContext.PurchaseOrders.Where(r => DateTime.Now.Subtract(r.ReqDate).Days == 0).ToList();
0 голосов
/ 26 июля 2013

Более компактная версия кода @Angus

var mADates = from ta in db.AM_Assignments
                      orderby ta.Assignment_DTM 
                      group ta by ta.Assignment_DTM.Date;

return mADates.Select(dt => Convert.ToDateTime(dt.Key.ToShortDateString())).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...