Я пытаюсь преобразовать необязательный параметр метода C # в DBNull
(если это null
) для добавления с помощью метода Parameter.AddWithValue.
Я видел много решений (Установите значение базы данных равным null с помощью a SqlCommand + parameters), методы расширения и т. д., но мне нужно было однострочное решение.
command.Parameters.AddWithValue("@Municipio", municipio ?? DBNull.Value)
не работают (Оператор '??' не может применяться к операндам типа 'string' и 'System.DBNull')
Метод: public static void Foo(string bar, string municipio = null)
К сожалению, я не могу сделать string municipio = DBNull.Value
, потому что «параметр по умолчанию должен быть константой времени компиляции» (смысл чего я не совсем понимаю).
Мне удалось заставить его работать так:
object obj = municipio == null ? command.Parameters.AddWithValue("@Municipio", DBNull.Value) : command.Parameters.AddWithValue("@Municipio", municipio);
Мне это очень неудобно, похоже, это способ делать с помощью JavaScript, я хочу что-то вроде:
if municipio == null ? command.Parameters.AddWithValue("@Municipio", DBNull.Value) : command.Parameters.AddWithValue("@Municipio", municipio);
Но почему-то я не могу заставить его работать так, возможно, мне не хватает синтаксиса (я пробовал много комбинаций скобок и т. Д.).
Итак, мой вопрос: это хорошая практика - однострочное решение, которого я достиг, или мне его заменить?
command.Parameters.AddWithValue("@Municipio", municipio ?? DBNull.Value)
- person stuartd   schedule 04.01.2017Operator '??' cannot be applied to operands of type 'string' and 'System.DBNull'
- person Dillinger   schedule 04.01.2017command.Parameters.AddWithValue("@Municipio", municipio ?? (object)DBNull.Value)
- person stuartd   schedule 04.01.2017