C# 可为空的日期时间异常

C# 可为空的日期时间异常,c#,sql,datetime,model-view-controller,nullable,C#,Sql,Datetime,Model View Controller,Nullable,在respository中,我将可为null的字符串o.Attribute(“PreorderLanchDate”)转换为可为null的日期时间 代码如下: PreorderLanchDate = o.Attribute("PreorderLanchDate") == null ? (DateTime?)null : DateTime.Parse(o.Attribute("PreorderLanchDate").Value), 在控制器上,launchdate可为null,不获取值,因为它显

在respository中,我将可为null的字符串
o.Attribute(“PreorderLanchDate”)
转换为
可为null的日期时间

代码如下:

PreorderLanchDate = o.Attribute("PreorderLanchDate") == null ? (DateTime?)null : DateTime.Parse(o.Attribute("PreorderLanchDate").Value), 
在控制器上,launchdate可为null,不获取值,因为它显示null值异常。 代码如下:

LaunchDate = (DateTime)product.PreorderLanchDate
试试这个

  //along with the null reference check, Use `String.IsNullOrEmpty` to check o.Attribute("PreorderLanchDate").Valuen
 PreorderLanchDate = o.Attribute("PreorderLanchDate") == null || String.IsNullOrEmpty(o.Attribute("PreorderLanchDate").Value) ? (DateTime?)null : DateTime.Parse(o.Attribute("PreorderLanchDate").Value), 



  //Cast to a nullable DateTime
LaunchDate = (DateTime?)product.PreorderLanchDate

product.PreorderLaunchDate
是一个可为空的
DateTime
,如果它的值为
null
,您将得到一个异常,将其转换为正常的
DateTime

您可以使用as运算符在兼容的引用类型或可为空的类型之间执行某些类型的转换

var nullableDateTime = product.PreorderLanchDate as DateTime;

if ( nullableDateTime != null )
    LaunchDate = nullableDateTime;

请尝试LaunchDate=product.PreorderLanchDate,因为PreorderLanchDate是可空的product.PreorderLanchDate是可空的“DateTime”,因此您可以尝试(DateTime?)LaunchDate=(DateTime?)product.PreorderLanchDate LaunchDate已在模型类中初始化为可空,因此它给出了异常无法将“System.DateTime”转换为“System.DateTime”。存在显式转换(是否缺少转换)”