从值为空的读取器转换日期时间时遇到问题。
form._date101 = reader[52] == DBNull.Value ? DBNull.Value : (DateTime?)reader[52];
获取:无法确定条件表达式的类型,因为“System.DBNull”和“System.DateTime?”之间没有隐式转换?
有任何想法吗?
从值为空的读取器转换日期时间时遇到问题。
form._date101 = reader[52] == DBNull.Value ? DBNull.Value : (DateTime?)reader[52];
获取:无法确定条件表达式的类型,因为“System.DBNull”和“System.DateTime?”之间没有隐式转换?
有任何想法吗?
我怀疑你的意思是:
form._date101 = reader[52] == DBNull.Value ? null : (DateTime?)reader[52];
这是假设这_date101
是一个类型的字段DateTime?
。我希望您想说“DateTime?
如果数据库中的值为空,则使用空值;否则使用非空值。
您还可以将 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");