0

私はすでにこれでさまざまな答えを経験してきましたが、実際に機能する答えはありません。(明らかに) 中心的な問題は、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値を出力しないようにしましたが、他の場所で役立つので、これをクラックしたいと思います

4

5 に答える 5

1

あなたは試すことができます

DateTime? nextDue = myReader.IsDbNull(3) ? null : (DateTime?) myReader.GetDateTime (3)
于 2013-01-30T13:08:43.560 に答える
1

まず、構文は次のとおりです。

DateTime? nextDue = myReader.GetDateTime(3) = DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3) ;

間違っています。次のようにする必要があります。

DateTime? nextDue = myReader.GetDateTime(3) == DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3) ;

次に、次を使用できます。

DateTime? nextDue = myReader.IsDBNull(3) ? null : (DateTime?)myReader.GetDateTime (3) ;
于 2013-01-30T13:09:31.223 に答える
0

試す

  DateTime? nextDue = myReader.GetValue(3) == DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3);
于 2013-01-30T13:08:23.957 に答える
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;
于 2013-01-30T13:06:16.063 に答える
0

nullにキャストする必要がありますDateTime?

DateTime? nextDue = myReader.IsDBNull(3) ? 
    null as DateTime? : 
    (DateTime?)myReader.GetDateTime (3) 
于 2013-01-30T13:06:57.923 に答える