如果条件,如何使用null,dbnull和datetime

时间:2014-03-26 14:15:57

标签: c# ado.net

我从SQL-Server检索一些日期时间数据。在我的Web.Api控制器中,我建议数据库数据到我的对象。

这有效:

 if (reader["images_lastupload"] == DBNull.Value)
 {
      mydata.ImagesLastUpload = null;
 }
 else
 {
      mydata.ImagesLastUpload = Convert.ToDateTime(reader["images_lastupload"].ToString());
 }

db字段" Images_lastupload"可以是NULL。所以我想检查一下。

mydata.ImagesLastUpload是一个可以为空的日期时间。一切正常。

但短版不起作用:

 mydata.ImagesLastUpload = (reader["images_lastupload"] == DBNull.Value) ? null : Convert.ToDateTime(reader["images_lastupload"].ToString());

如何使短版本正常工作?我的德国错误是:

Der Typ des bedingten Ausdrucks kann nicht bestimmt werden,weil keine implizite Konvertierung zwischen''和' System.DateTime' erfolgt。

1 个答案:

答案 0 :(得分:7)

nullDateTime之间没有隐式转换。您可以将null转换为可空DateTime

mydata.ImagesLastUpload = (reader["images_lastupload"] == DBNull.Value) ? 
    (DateTime?)null : Convert.ToDateTime(reader["images_lastupload"].ToString());

或使用Nullable types and the ternary operator

中建议的任何其他方法