C# 处理从数据库返回的空日期

C# 处理从数据库返回的空日期,c#,.net,sql-server-2005,ado.net,C#,.net,Sql Server 2005,Ado.net,您好,我正在尝试返回可能具有空日期值的集合。 但是,如果它们是空的,我希望保持这种方式,而不仅仅是使用任意的日期 如果是字符串,我会检查空值,如下所示: calEventDTO.occurrenceType = dr.IsDBNull(10) ? null : dr.GetString(10); 约会时我该怎么做? 以下内容未编译(在'null'和System.DateTime'之间没有隐式转换) 我的dto设置为处理空值 public DateTime? recurrenceID {

您好,我正在尝试返回可能具有空日期值的集合。 但是,如果它们是空的,我希望保持这种方式,而不仅仅是使用任意的日期

如果是字符串,我会检查空值,如下所示:

calEventDTO.occurrenceType = dr.IsDBNull(10) ? null : dr.GetString(10);
约会时我该怎么做? 以下内容未编译(在'null'和System.DateTime'之间没有隐式转换)

我的dto设置为处理空值

public DateTime? recurrenceID
    {
        get { return _recurrenceID; }
        set { _recurrenceID = value; }
    }
非常感谢任何提示/帮助/指点。 谢谢

试试:

calEventDTO.recurrenceID = dr.IsDBNull(9) ? null : (DateTime?) dr.GetDateTime(9);
那个?运算符要求两个操作数(在本例中为null和dr.GetDateTime(9))的类型相同。

请尝试:

calEventDTO.recurrenceID = dr.IsDBNull(9) ? null : (DateTime?) dr.GetDateTime(9);

那个?运算符需要两个操作数(NULL和DR.GETDATETIME(9)在这种情况下)是相同的类型。

< P>条件运算符不考虑将结果分配给什么,因此必须将任一操作数都转换为DATETIME:
calEventDTO.recurrenceID = dr.IsDBNull(9) ? (DateTime?)null : dr.GetDateTime(9);

条件运算符不考虑将结果分配给什么,因此必须将任一操作数都转换为DATETIME:

calEventDTO.recurrenceID = dr.IsDBNull(9) ? (DateTime?)null : dr.GetDateTime(9);
IsDbNull(int)通常比使用GetSqlInt32之类的方法,然后与DBNull.Value或使用自己的.IsNull之类的方法慢得多:

    public static int Int32(this SqlDataReader r, int ord)
    {
        var t = r.GetSqlInt32(ord);
        return t.IsNull ? default(int) : t.Value;
    }
尝试了一些模板解决方案,但到目前为止没有任何效果。问题是,所有Sql类型(这里是SqlInt32)实际上都是结构,而它们都有.Value属性C#,没有真正的模板来处理它。此外,它们还有自己的INullable接口,该接口只有.IsNull,不能与Nyllable兼容

我怀疑需要一整套Sql类型作为C#模板,或者向它们添加ICOnvertible,以便只需要一个或两个模板化方法

如果有人有一个或两个函数技巧的想法,请说出来:-)

IsDbNull(int)通常比使用诸如GetSqlInt32之类的方法,然后与DBNull.Value进行比较或使用它自己的方法慢得多。IsNull类似:

    public static int Int32(this SqlDataReader r, int ord)
    {
        var t = r.GetSqlInt32(ord);
        return t.IsNull ? default(int) : t.Value;
    }
尝试了一些模板解决方案,但到目前为止没有任何效果。问题是,所有Sql类型(这里是SqlInt32)实际上都是结构,而它们都有.Value属性C#,没有真正的模板来处理它。此外,它们还有自己的INullable接口,该接口只有.IsNull,不能与Nyllable兼容

我怀疑需要一整套Sql类型作为C#模板,或者向它们添加ICOnvertible,以便只需要一个或两个模板化方法

如果有人有一个或两个功能性技巧的想法,大声说出来:-)