CS0173 C# Тип условного выражения не может быть определен, поскольку не существует неявного преобразования между "System.DateTime" и "System.DBNull"

У меня есть MS SQL Local DB, которая позволяет полям столбца иметь нулевые значения. Однако, когда я попытался установить (DateTime?) Значение NULL для поля, возникла исключительная ситуация "System.ArgumentException не может установить для столбца" DeliveryTime "значение NULL. Вместо этого используйте DBNull.". Поэтому я попытался заменить (DateTime?) Ноль на DBNull.value. Потом выскочила ошибка компиляции

"CS0173 C# Тип условного выражения не может быть определен, поскольку не существует неявного преобразования между" System.DateTime "и" System.DBNull ""

Я использую сообщество MS VS 2017 Что мне делать с этим?

DataRow row; 
string rs; 
DateTime dt; 

row["DeliveryTime"] = DateTime.TryParse(rs, out dt) ? dt : (DateTime?) null;
// I replaced (DateTime?) null to DBNull.Value and got a compile error

1 ответ

Похоже, что вы делаете (в задании или вызове - какое-то выражение, в основном):

val == null ? DBNull.Value : val.Value

или что-то подобное; проблема заключается в том, что два результата условного оператора должны иметь общий тип. Самый простой способ исправить это

((object)val) ?? DBNull.Value

Вместо этого используется объединение нулей, а также тот факт, что Nullable<T> который не имеет значения преобразуется в null ссылка.

Другие вопросы по тегам