将DateTime属性设置为null

jpa*_*lov 0 c#

所以我有这个属性,并且想要将值设置为从db返回的值,或者如果它为空则设置为null.可以使用if-else执行此操作,但是为了更清晰的代码,我想使用三元运算符.有人能指出我犯的错误.谢谢!!!

public DateTime? OptionExpiration {get;set;}
 //actually sets the value to null               
 if(String.IsNullOrEmpty(dr["OPTION_EXPIRATION"].ToString())){
      OptionExpiration = null;
}else{
      OptionExpiration = DateTime.Parse(dr["OPTION_EXPIRATION"].ToString());
}
Run Code Online (Sandbox Code Playgroud)

//所以我检查字符串是空还是null,然后尝试设置值但收到此错误:错误2运算符'|' 不能应用于''和'System.DateTime?'类型的操作数

String.IsNullOrEmpty(dr["OPTION_EXPIRATION"].ToString())
? OptionExpiration =  null
| OptionExpiration = DateTime.Parse(dr["OPTION_EXPIRATION"].ToString())
;
Run Code Online (Sandbox Code Playgroud)

Pat*_*man 6

您正在使用三元运算符错误.

它应该是:

OptionExpiration = String.IsNullOrEmpty(Convert.ToString(dr["OPTION_EXPIRATION"]))
                   ? (DateTime?)null
                   : DateTime.Parse(dr["OPTION_EXPIRATION"].ToString())
                   ;
Run Code Online (Sandbox Code Playgroud)

所以:

assignment = condition ? trueExpression : falseExpression;
Run Code Online (Sandbox Code Playgroud)

如果该字段是date数据库中的字段,则执行此操作可能更好:

OptionExpiration = Convert.IsDBNull(dr["OPTION_EXPIRATION"])
                   ? (DateTime?)null
                   : (DateTime)dr["OPTION_EXPIRATION"]
                   ;
Run Code Online (Sandbox Code Playgroud)