在做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();
}
答案 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