Linq To Sql 仅比较时间
Posted
技术标签:
【中文标题】Linq To Sql 仅比较时间【英文标题】:Linq To Sql compare Time only 【发布时间】:2014-02-12 19:03:51 【问题描述】:如何只比较 DateTime 对象的时间而不得到以下结果
错误:
An exception of type 'System.NotSupportedException' occurred in mscorlib.dll but was not handled in user code Additional information: The specified type member 'TimeOfDay' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
我的代码:
var date = DateTime.Parse(query.DueTime);
entities = entities.Where(r => r.DueTime.TimeOfDay.Equals(date.TimeOfDay));
【问题讨论】:
【参考方案1】:这就是答案!
var date = DateTime.Parse(query.DueTime);
var time = date.TimeOfDay;
entities = entities.Where(r => DbFunctions.CreateTime(r.DueTime.Hour, r.DueTime.Minute, r.DueTime.Second) == time);
【讨论】:
我没有得到 DbFunctions 。它给了我错误“当前上下文中不存在名称 DbFunctions。”我必须使用任何命名空间吗?【参考方案2】:您是否尝试过使用 EntityFunctions.TruncateTime(TIME) 函数?
如下:
var date = DateTime.Parse(query.DueTime);
entities = entities.Where(r => EntityFunctions.TruncateTime(r.DueTime) == EntityFunctions.TruncateTime(date));
希望这会有所帮助!
【讨论】:
这将用于比较日期忽略时间,OP只要求比较时间以上是关于Linq To Sql 仅比较时间的主要内容,如果未能解决你的问题,请参考以下文章
VB.Net Linq to Entities Null 比较 - “啥都没有”或“= 啥都没有”?