LINQ查询发出DateTime转换

时间:2012-03-24 10:11:29

标签: c# linq ado.net

在做LINQ时我遇到了这个错误。 “无法隐式转换类型'System.DateTime?'到'System.DateTime'。存在显式转换(你是否错过了演员?)“

我知道它因为数据类型但转换不起作用还有其他方法可以做到这一点。 这是我的代码。

        {var tvr = from t in ce.tbl_TVRinfo
                  where t.TVRID == fTVRid
                  select new TVRDetails
                  {
                      TVRID = t.TVRID,
                      Ename = t.Ename,
                      Esdw = t.Esdw,
                      Edob =t.Edob, //this field is causing date conversion error
                      Epob = t.Epob,
                      Equalification = t.Equalification,
                      NIC = t.NIC,
                      EAddress = t.EAddress
                  }
        return tvr.ToList();
         }

2 个答案:

答案 0 :(得分:1)

您正在尝试将Nullable DateTime分配给标准DateTime。如果您确信Nullable DateTime包含一个值,那么您可以这样做:

Edob =t.Edob.Value

或者,如果您不确定它是否有值:

Edob = t.Edob.HasValue ? t.Edob.Value : SomeOtherValidDateTimeValue

答案 1 :(得分:0)

你可以做到

Edob = (DateTime)t.Edob

但如果t.Edob为null,则会引发异常。 如果Edob为null,更好的是提供默认的日期时间。 NULL合并运算符在这里很有用。

Edob = t.Edob ?? DateTime.Now // Or DateTime.MinValue, or whatever makes sense in your situation