【问题标题】:Linq To Sql compare Time onlyLinq To Sql 仅比较时间
【发布时间】: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));

【问题讨论】:

    标签: c# sql linq


    【解决方案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只要求比较时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    相关资源
    最近更新 更多