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
ссылка.