我在 Entity Framework 6 中有这个 LINQ 查询:
var timeCapturesQuery = Context.TimeCaptures
.Where(t =>
&& t.StartDateTime.TimeOfDay < endTime
&& t.EndDateTime.TimeOfDay > startTime);
EndTime 和 StartTime 是 TimeSpan
类型的参数,StartDateTime 和 EndDateTime 是 datetime
表中的列。
不幸的是,我在运行时遇到了这个错误:
The specified type member 'TimeOfDay' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
如何在此 LINQ 查询中从 DateTime 获取 TimeSpan
(即 SQL 中 datetime
的 time
)?
最佳答案
看起来像DbFunctions.CreateTime
是你要找的:
When used as part of a LINQ to Entities query, this method invokes the canonical CreateTime EDM function to create a new TimeSpan object.
因此要在两次之间获得结果,您可以:
var timeCapturesQuery = Context.TimeCaptures.Where(t =>
DbFunctions.CreateTime(t.StartDateTime.Hour, t.StartDateTime.Minute, t.StartDateTime.Second) < endTime &&
DbFunctions.CreateTime(t.EndDateTime.Hour, t.EndDateTime.Minute, t.EndDateTime.Second) > startTime);
关于c# - 如何在 Entity Framework 查询中将 DateTime 转换为 TimeSpan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39822588/