处理从db返回的空日期

use*_*510 1 .net c# ado.net sql-server-2005

嗨,我试图返回一个可能具有空日期值的集合.但是,如果它们为null - 我希望保持这种方式,而不是仅使用任意日期.

如果它是一个字符串,我会像这样检查空值:

calEventDTO.occurrenceType = dr.IsDBNull(10) ? null : dr.GetString(10);
Run Code Online (Sandbox Code Playgroud)

我如何约会?以下内容无法编译('null'和System.DateTime'之间没有隐式转换).

calEventDTO.recurrenceID = dr.IsDBNull(9) ? null : dr.GetDateTime(9);
Run Code Online (Sandbox Code Playgroud)

我的dto设置为处理空值.

public DateTime? recurrenceID
    {
        get { return _recurrenceID; }
        set { _recurrenceID = value; }
    }
Run Code Online (Sandbox Code Playgroud)

任何提示/帮助/指针非常感谢.谢谢

Ale*_*ack 8

尝试:

calEventDTO.recurrenceID = dr.IsDBNull(9) ? null : (DateTime?) dr.GetDateTime(9);
Run Code Online (Sandbox Code Playgroud)

的?运算符需要两个操作数(在这种情况下为null和dr.GetDateTime(9))属于同一类型.


Guf*_*ffa 5

条件运算符不考虑将结果赋给的内容,因此必须将任一操作数转换为DateTime?:

calEventDTO.recurrenceID = dr.IsDBNull(9) ? (DateTime?)null : dr.GetDateTime(9);
Run Code Online (Sandbox Code Playgroud)