Linq сравнить по дате проблемы - PullRequest
1 голос
/ 13 апреля 2011

Мой код здесь

VisitorLog log = db.Context.VisitorLogs
         .Where(vl=>vl.inDate.Date == DateTime.Now.Date).FirstOrDefault();

эта ошибка показана

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported

Как сравнить только по дате (skip time) в LINQ?

ПРАВИЛЬНЫЙ ОТВЕТ

var currentDate = DateTime.Now;
VisitorLog log = db.Context.VisitorLogs
.Where(vl => EntityFunctions.DiffDays(vl.inDate, currentDate) == 0).FirstOrDefault();

Спасибо за ответ.

Ответы [ 4 ]

2 голосов
/ 21 июня 2014

Вы можете попробовать это также:

context.Products.Where(x=> (
       EntityFunctions.TruncateTime(x.CreatedDate) >=
       EntityFunctions.TruncateTime(startdate))
    && (EntityFunctions.TruncateTime(x.CreatedDate) <=
       EntityFunctions.TruncateTime(enddate)))

По вашему требованию вы должны попробовать:

var currentDate = DateTime.Now;

VisitorLog log = db.Context.VisitorLogs.Where(vl =>
   EntityFunctions.DiffDays(EntityFunctions.TruncateTime(vl.inDate),
   EntityFunctions.TruncateTime(currentDate)) == 0).FirstOrDefault();
2 голосов
/ 13 апреля 2011

Сделайте это вместо этого,

var currentDate = DateTime.Now.Date;
VisitorLog log = db.Context.VisitorLogs
         .Where(vl=>vl.inDate.Date == currentDate).FirstOrDefault();

Но это может быть сложно, если vl.inDate.Date включает в себя время, но оно не выдаст ошибку, просто может не совпадать

EDIT:

Учитывая, что это не сработало, вы можете попробовать эту работу вокруг

var currentDate = DateTime.Now.Date;
var timeIn24HrsTime = DateTime.Now.AddDays(1).Date;
VisitorLog log = db.Context.VisitorLogs
         .Where(vl=>vl.inDate >= currentDate && vl.inDate < timeIn24HrsTime).FirstOrDefault();
2 голосов
/ 13 апреля 2011

Вы должны использовать канонические функции объекта, см. this , а все канонические функции см. this . Вы можете использовать День, год и Месяц для решения вашей проблемы.

1 голос
/ 13 апреля 2011

Попробуйте

vl.inDate.Date.Equals(DateTime.Now.Date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...