【问题标题】:Converting possible null value to a default in a time conversion inside of Linq在 Linq 内部的时间转换中将可能的空值转换为默认值
【发布时间】:2014-06-03 17:10:10
【问题描述】:

给定时区偏移值作为可为空的 int,我将如何将 linq 查询中的该值转换为该位置的当前时间?

 var data = (from c in dbContext.Contacts
                      select new
                        {
                            c.Id,
                            TheirTime = DateTime.UtcNow.AddHours(c.TimezoneOffset)
                     })

这将返回“LINQ to Entities 无法识别方法 'System.DateTime AddHours(Double)' 方法,并且此方法无法转换为存储表达式。”错误。

【问题讨论】:

标签: c# linq


【解决方案1】:

您可以使用EntityFunctions 进行此特定查询:

var data = (from c in dbContext.Contacts
                      select new
                        {
                            c.Id,
                            TheirTime =EntityFunctions.AddHours(DateTime.UtcNow,c.TimezoneOffset)
                     })

【讨论】:

  • 谢谢,不熟悉这些。但它们已被弃用并替换为 System.Data.Entity.DbFunctions
  • @JohnS 我不知道你的实体框架版本。但感谢您的信息。很酷的东西!
猜你喜欢
  • 2011-12-23
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 1970-01-01
  • 2019-05-22
  • 2018-10-04
  • 1970-01-01
相关资源
最近更新 更多