寻找具体日期

时间:2008-12-23 18:26:47

标签: c# entity-framework

任何人都知道如何在实体框架内查询特定日期?我尝试了下面的代码,但它给了我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 个答案:

答案 0 :(得分:11)

试试这个:

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();

由于您无法使用DateTime列的.Date属性,因为必须使用一系列转换,强制转换,截断等在SQL中编写,然后您需要比较整个DateTime值,日期和时间都是一个值,因此你需要与一个范围进行比较。

修改已更改,以反映不支持.AddDays。

答案 1 :(得分:2)

好吧,经过一段时间的尝试,我找到了解决方案

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