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 仅比较时间的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to Entities区分大小写比较

VB.Net Linq to Entities Null 比较 - “啥都没有”或“= 啥都没有”?

LINQ TO SQL 和 ADO.NET ENTITY 有啥区别呢?

查看Linq to Sql生成的sql语句(转)

LINQ to Entities 区分大小写比较

在 LINQ to Entities 中正确比较没有时间的 DatetimeOffset