我有日期时间变量officeStartTime
,它将日期时间值保持为
officeStartTime = {9/24/2013 10:00:00 AM}
我的模块CHECKINOUT
包含userid
,checktime
和其他属性。
现在我想要的是获取CHECKINOUT
条目的列表,其中检查时间的时间部分大于officeStartTime
的时间部分。
我试试:
var checklist= con.CHECKINOUTs.Where(x => x.CHECKTIME.TimeOfDay > officeStartTime.TimeOfDay);
checklist
包含以下错误:
{"The specified type member 'TimeOfDay' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported."}
。
它表示LINQ to Entities不支持TimeOfDay
,如果是这样,我如何检查LINQ中datetime的时间部分。有没有其他方法可以做到这一点?请建议我做什么。
谢谢。
答案 0 :(得分:11)
答案 1 :(得分:9)
使用EntityFunctions.CreateTime方法:
var checklist= from c in con.CHECKINOUTs
let time = EntityFunctions.CreateTime(c.CHECKTIME.Hour,
c.CHECKTIME.Minute,
c.CHECKTIME.Second)
where time > officeStartTime.TimeOfDay
select c;
流利语法:
con.CHECKINOUTs.Where(c => EntityFunctions.CreateTime(c.CHECKTIME.Hour, c.CHECKTIME.Minute, c.CHECKTIME.Second) > officeStartTime.TimeOfDay)
答案 2 :(得分:4)
正如提醒一样,如果您使用的是Entity Framework V6.0.0.0,则EntityFunctions
OUTDATED 。
可以在DbFunctions
下找到相同的功能。
所以对于你的答案,使用EF6,它看起来像这样:
con.CHECKINOUTs.Where(c => DbFunctions.CreateTime(c.CHECKTIME.Hour, c.CHECKTIME.Minute, c.CHECKTIME.Second) > officeStartTime.TimeOfDay)
希望这有帮助!