0

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

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

我的查询是

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

谁能告诉我如何正确处理这件事?

4

2 回答 2

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();
于 2012-05-24T08:25:56.930 回答
1

在实体框架中,建议使用DbFunctionshelper fromSystem.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();
于 2014-03-24T14:19:26.957 回答