【问题标题】:Get time only of datetime仅获取日期时间的时间
【发布时间】:2013-10-06 05:56:23
【问题描述】:

我有日期时间变量officeStartTime,它将日期时间值保存为

officeStartTime = {9/24/2013 10:00:00 AM}

我有模块CHECKINOUT,其中包含useridchecktime 和其他属性。

现在我想要的是获取检查时间的时间部分大于officeStartTime 的时间部分的CHECKINOUT 条目列表。

我试试:

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."}

它说TimeOfDay 在 LINQ to Entities 中不受支持,如果是这样,我如何在 LINQ 中检查日期时间的时间部分。有没有其他方法可以做到这一点?请建议我该怎么做。

谢谢。

【问题讨论】:

  • 如果答案对您有帮助 - 请点赞。如果这是解决方案 - 投票并更新
  • 我发表了这条评论 - 因为今天 - 你有 8 个答案,其中 0 个被接受,但几乎都有回复。
  • @MikroDel 我正在根据您的回答进行尝试,我会为您的回答投票。

标签: linq entity-framework entity-framework-4.1


【解决方案1】:

请注意,如果您使用的是实体框架版本 6.0.0.0,EntityFunctions过时

DbFunctions 下可以找到相同的功能。

所以对于你的答案,使用 EF6,它看起来像这样:

con.CHECKINOUTs.Where(c => DbFunctions.CreateTime(c.CHECKTIME.Hour, c.CHECKTIME.Minute, c.CHECKTIME.Second) > officeStartTime.TimeOfDay)

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    使用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)
    

    【讨论】:

    • 请注意,对于 Entity Framework 6,这已更改为 DbFunctions.CreateTime
    【解决方案3】:

    使用

    CreateTime(hour, minute, second)
    

    来自Date and Time Canonical Functions

    【讨论】:

    • @link2jagann - 如果它有效 - 也请接受答案! =)
    • 好吧,为什么不......如果你能帮助我获得更多的声誉,我会很高兴......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 2015-04-25
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    相关资源
    最近更新 更多