C# 使用EF6 DbFunctions.TruncateTime比较日期时间时出错
我正在尝试使用以下代码从数据区域检索一些数据:C# 使用EF6 DbFunctions.TruncateTime比较日期时间时出错,c#,linq,entity-framework,datetime,C#,Linq,Entity Framework,Datetime,我正在尝试使用以下代码从数据区域检索一些数据: var rotas = db.X.Where(r => r.DataDaExecucao != null) .Where(r => System.Data.Entity.DbFunctions.TruncateTime(r.Date.Value) >= System.Data.Entity.DbFunctions.TruncateTime(startDateTime)) .Where(r =
var rotas = db.X.Where(r => r.DataDaExecucao != null)
.Where(r => System.Data.Entity.DbFunctions.TruncateTime(r.Date.Value) >= System.Data.Entity.DbFunctions.TruncateTime(startDateTime))
.Where(r => System.Data.Entity.DbFunctions.TruncateTime(r.Date.Value) < System.Data.Entity.DbFunctions.TruncateTime(endDateTime))
.Join(db.T, r => r.Id, t => t.X_Id.Value,
(r, t) => new
{
id = r.Id,
start = r.Date.Value.ToString("s"),
end = r.Date.Value.AddDays(1).ToString("s"),
title = t.Z.Name,
allday = false
}).ToList();
var rotas=db.X.Where(r=>r.DataDaExecucao!=null)
.Where(r=>System.Data.Entity.DbFunctions.TruncateTime(r.Date.Value)>=System.Data.Entity.DbFunctions.TruncateTime(startDateTime))
.Where(r=>System.Data.Entity.DbFunctions.TruncateTime(r.Date.Value)r.Id,T=>T.X_Id.Value,
(r,t)=>新
{
id=r.id,
开始=r.Date.Value.ToString(“s”),
end=r.Date.Value.AddDays(1).ToString(“s”),
title=t.Z.Name,
全天=假
}).ToList();
“日期”属性可为空您可以使用where更改匿名类型,它也将生成sql查询 在本例中,您使用了
ToString(“s”)
,这意味着您希望获得秒的日期部分,该部分可以被SqlFunctions::DatePart
替换。而Date::AddDays
可以替换为SqlFunctions::DateAdd
new
{
id = r.Id,
start = SqlFunctions.DatePart("s", r.Date),
end = SqlFunctions.DatePart("s", SqlFunctions.DateAdd("d", 1, r.Date)),
title = t.Z.Name,
allday = false
}
与System.Data.Entity相关,您有什么EF版本以及您使用的是什么.net framework版本?.ToList()强制对所选的任何行进行完整检索。如果只需要一个很小的结果集,这可能没问题,但如果不是这样的话,这是一个很好的方法,可以让事情停下来。