EF查询中的日期比较

时间:2012-05-24 07:59:48

标签: linq entity-framework-4

我有一个EF查询,其中我正在使用lambda表达式,当我尝试获取两个日期之间的差异时,它会抛出异常

LINQ to Entities不支持指定的类型成员“Date”。仅支持初始化程序,实体成员和实体导航属性。

我的查询是

var unApprovedLeaves = db.Leaves.Where(l => l.Status.Id == 1 && ((System.DateTime.Now.Date - l.ToDate.Date).TotalDays)==0)
    .Include("Employee")
    .Include("Employee.Manager")
    .ToList();

任何人都可以告诉我,我该如何做到这一点?

2 个答案:

答案 0 :(得分:4)

您必须使用SqlFunctions中的System.Data.Objects.SqlClient帮助器。试试这个:

var today = DateTime.Now.Date;
var unApprovedLeaves = db.Leaves.Where(l => l.Status.Id == 1 && 
                                      (SqlFunctions.DateDiff("day", today, l.ToDate))==0)
    .Include("Employee")
    .Include("Employee.Manager")
    .ToList();

答案 1 :(得分:1)

在实体框架中,建议使用DbFunctions

中的System.Data.Entity帮助程序

试试这个:

var today = DateTime.Now.Date;
var unApprovedLeaves = db.Leaves.Where(l => l.Status.Id == 1 && 
                                      (DbFUnction.DiffDays(today, l.ToDate))==0)
    .Include("Employee")
    .Include("Employee.Manager")
    .ToList();