Поиск конкретной даты

Кто-нибудь знает, как запросить конкретную дату в рамках сущности? Я пробовал следующий код, но он дает мне 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 ответа

Попробуйте следующее:

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 не поддерживается.


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

var deposit = entities1.Deposit
 .Where("CreatedDate >= @0 and CreatedDate < @1", DateTime.Today, DateTime.Today.AddDays(1))
 .FirstOrDefault();

licensed under cc by-sa 3.0 with attribution.