使用Entity Framework 4和Linq查询比较DateTime属性中的日期的简单方法

Onl*_*ere 8 c# datetime entity-framework-4

我正在尝试运行以下代码,但是通过不将我期望的实体交给我,比较失败了.

它比较06/09/2011 0:00:0006/09/2011 12:25:00,后者是我的数据库记录值.这就是比较失败的原因,我没有得到我需要的记录.

我只是想比较日期是否匹配,我不关心时间.

DateTime today = DateTime.Now.Date;
var newAuctionsResults = repo.FindAllAuctions()
                        .Where(a => a.IsActive == true || a.StartTime.Value == today)
                        .ToList();
Run Code Online (Sandbox Code Playgroud)

我怎样才能比较日期?

如果在.StartTime.Value部分使用.Date属性,我会得到一个异常:

LINQ to Entities不支持指定的类型成员"Date".仅支持初始值设定项,实体成员和实体导航属性.

Cra*_*ntz 16

您可以使用个人成员:

var newAuctionsResults = repo.FindAllAuctions()
                        .Where(a => a.IsActive == true 
                                    || (a.StartTime.Value.Year == todayYear
                                        && a.StartTime.Value.Month == todayMonth
                                        && a.StartTime.Value.Day == todayDay))
                        .ToList();
Run Code Online (Sandbox Code Playgroud)

...或使用L2E支持的任何其他方法/属性.


صفي*_*صفي 11

您也可以EntityFunctions.TruncateTime()在命名空间下使用System.Data.Objects

防爆.

db.Orders.Where(i => EntityFunctions.TruncateTime(i.OrderFinishDate) == EntityFunctions.TruncateTime(dtBillDate) && i.Status == "B")
Run Code Online (Sandbox Code Playgroud)

像魅力一样工作.