2013-11-15 4 views
0

Я следующий код, который, кажется, работает:C# DataRow сравнения DBNull.Value для DateTime против нулевой строки для

DataRow row = <result of a query>; 
string strVarName = (row["VarName"]??"").ToString(); 

Я могу также использовать что-то вроде этого, - и это тоже работает:

string strVarName = row["VarName"]==null ? "" : row["VarName"].ToString(); 

Я хотел бы использовать ту же форму для получения даты. Intellisense сообщает мне, что обнуляемым оператор не любит работать с датами, так что я пытаюсь что-то подобное, я должен сделать

string strVarName = row["VarName"]==DBnull.Value ? "" : row["VarName"].ToShortDateString(); 

Получить что? Для строк я сравниваю значение null, но для дат я сравниваю DBnull. Строка даты не будет работать последовательно с сопоставлением с нулем. Я в порядке с этим ... и может быть, что сравнение строк будет работать, если я попытаюсь сравнить его с DBNull.Value. Мне просто интересно, почему кажется, что я должен использовать DBNull.Value по сравнению с полем DateTime DataRow, тогда как я могу использовать null при сравнении со строковым полем.

ответ

2

DateTime - тип значения и не может быть нулевым, следовательно, вы не можете сравнить его с нулевым (так же, как вы не можете сравнить int с нулевым).