我已经完成了这个问题的各种答案,但是没有一个答案能够真正起作用。 核心问题(显然)是DateTime没有任何NULL概念,所以通常是
string dateValue = myReader.IsDBNull (4) ? null : myReader.GetDateTime(4) ;
不起作用。
我已经尝试了
DateTime? nextDue = myReader.GetDateTime(3) == DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3) ;
但是这给了
Operator '==' cannot be applied to operands of type 'System.DateTime' and 'System.DBNull'
更改为
DateTime? nextDue = myReader.GetDateTime(3) = DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3) ;
产生
Cannot implicitly convert type 'System.DBNull' to 'bool'
我最终将SQL更改为不输出NULL值,但我仍然想破解这个值,因为它在其他地方会有用
答案 0 :(得分:1)
你可以尝试
DateTime? nextDue = myReader.IsDbNull(3) ? null : (DateTime?) myReader.GetDateTime (3)
答案 1 :(得分:1)
首先是你的语法:
DateTime? nextDue = myReader.GetDateTime(3) = DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3) ;
id错误。应该是:
DateTime? nextDue = myReader.GetDateTime(3) == DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3) ;
其次你可以使用:
DateTime? nextDue = myReader.IsDBNull(3) ? null : (DateTime?)myReader.GetDateTime (3) ;
答案 2 :(得分:0)
只需使用:
DateTime? nextDue;
if (myReader.GetDateTime(3) == DBNull.Value)
nextDue = myReader.GetDateTime(3);
else
nextDue = null;
可替换地:
DateTime? nextDue;
if (myReader.IsDBNull(3))
nextDue = myReader.GetDateTime(3);
else
nextDue = null;
答案 3 :(得分:0)
您需要将null
转换为DateTime?
:
DateTime? nextDue = myReader.IsDBNull(3) ?
null as DateTime? :
(DateTime?)myReader.GetDateTime (3)
答案 4 :(得分:0)
试
DateTime? nextDue = myReader.GetValue(3) == DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3);