В поисках конкретной даты - PullRequest
4 голосов
/ 23 декабря 2008

Кто-нибудь знает, как запросить конкретную дату в рамках сущности? Я попытался следующий код, но он дает мне NotSupportedException.

var deposit = (from tempDeposit in entities.Deposit
where !tempDeposit.IsApproved
&& tempDeposit.CreatedDate.Date == DateTime.Today
select tempDeposit).FirstOrDefault();

Я также попробовал следующий код, но все равно дал мне NotSupportedException.

var deposit = (from tempDeposit in entities.Deposit
where !tempDeposit.IsApproved
&& tempDeposit.CreatedDate.ToFullString() == DateTime.Today.ToFullString()
select tempDeposit).FirstOrDefault();

ToFullString () - метод расширения

public static string ToFullString(this DateTime date){
  return date.ToString("yyyyMMdd");
}

Пожалуйста, помогите.

Ответы [ 2 ]

11 голосов
/ 23 декабря 2008

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

var d1 = DateTime.Today;
var d2 = d1.AddDays(1);
var deposit = (from tempDeposit in entities.Deposit
               where !tempDeposit.IsApproved
                     && tempDeposit.CreatedDate >= d1
                     && tempDeposit.CreatedDate < d2
               select tempDeposit).FirstOrDefault();

Поскольку вы не можете использовать свойство .Date столбца DateTime, поскольку его необходимо записать в SQL с диапазоном преобразований, приведений, усечений и т. Д., Вам необходимо сравнить все значение DateTime, дату и время оба, до значения, и, следовательно, вам нужно сравнить с диапазоном.

Редактировать Изменено с учетом того, что .AddDays не поддерживается.

2 голосов
/ 23 декабря 2008

Ну, после некоторого времени я нашел решение

var deposit = entities1.Deposit
              .Where("CreatedDate >= @0 and CreatedDate < @1", DateTime.Today, DateTime.Today.AddDays(1))
              .FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...