在Linq内部的时间转换中将可能的空值转换为默认值

时间:2014-06-03 17:10:11

标签: c# linq

假设时区偏移值为可空的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)'方法,并且此方法无法转换为商店表达式。”错误。

1 个答案:

答案 0 :(得分:1)

您可以将EntityFunctions用于此特定查询:

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