2

从值为空的读取器转换日期时间时遇到问题。

form._date101 = reader[52] == DBNull.Value ? DBNull.Value : (DateTime?)reader[52];

获取:无法确定条件表达式的类型,因为“System.DBNull”和“System.DateTime?”之间没有隐式转换?

有任何想法吗?

4

2 回答 2

12

怀疑你的意思是:

form._date101 = reader[52] == DBNull.Value ? null : (DateTime?)reader[52];

这是假设这_date101是一个类型的字段DateTime?。我希望您想说“DateTime?如果数据库中的值为空,则使用空值;否则使用非空值。

于 2013-05-09T19:48:53.903 回答
1

您还可以将 Jon 的答案添加为扩展方法,如下所示:

public static class ReaderExtensions
{
    public static DateTime? GetNullableDateTime(this SqlDataReader reader, string name) =>
        reader[name] == DBNull.Value ? (DateTime?)null : (DateTime?)reader[name];
}

然后你可以像这样使用它:

item.PatientDob = reader.GetNullableDateTime("Birth_Dt");
于 2020-08-26T04:56:20.963 回答