Как использовать DbNull.Value при условном присвоении значения столбца? [Дубликат]

1

Я создаю объект Command с параметрами для установки значений столбца. Я хотел бы использовать простое условие для установки некоторого nullable int столбца nullable int либо целочисленному значению, либо DbNull.Value, в зависимости от того, является ли переменная нулевой или нет.

Пример:

dbCmd.Parameters.Add("@MyIntColumn", SqlDbType.Int).Value =
    myColumnValue == null ? DBNull.Value : myColumnValue;

Конечно, это дает ошибку компилятора: "нет неявного преобразования между DbNull и int".

Итак, каков правильный способ использования условного кода, результатом которого может быть либо int, либо DbNull?

Теги:
conditional-operator
dbnull

1 ответ

1
Лучший ответ

Проблема заключается в том, что компилятор не может определить, какой тип результата будет иметь выражение - будь то DBNull или int, поскольку они являются несовместимыми типами.

Явно накладываю по крайней мере одну сторону object на object (самый высокий общий знаменатель), и он поймет:

dbCmd.Parameters.Add("@MyIntColumn", SqlDbType.Int).Value =
    myColumnValue == null ? (object)DBNull.Value : myColumnValue;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню