AZHAR SAYYAD Ответов: 2

Как безопасно привести значение dbnull к int в C#


Привет
Я возвращаю значение Int из datagridview в переменную int. Некоторое время значение строки datagridview будет равно null. в это время он будет отображаться
Error (Object cannot be cast from DBNull to other types.
)

Index = Convert.ToInt32(MyGrid.Rows[2].Cells[8].Value);


Что я уже пробовал:

Я знаю, что с помощью приведенного ниже кода я могу решить эту проблему, но можете ли вы предложить мне какой-либо другой безопасный способ?
if(MyGrid.Rows[2].Cells[8].Value != null)
{
Index = Convert.ToInt32(MyGrid.Rows[2].Cells[8].Value);
}

2 Ответов

Рейтинг:
2

omerkamran

var index=
    (MyGrid.Rows[2].Cells[8].Value).Equals(null)
    ? 0
    : Convert.ToInt32((MyGrid.Rows[2].Cells[8].Value);

//or try This remove Value from Cell[8]

var index=
    (MyGrid.Rows[2].Cells[8]).Equals(null)
    ? 0
    : Convert.ToInt32((MyGrid.Rows[2].Cells[8].Value);


Рейтинг:
17

OriginalGriff

Вы не можете привести значение DBNull к какому - либо типу: Это то, что говорит DBNull-это специальное значение, которое говорит: "база данных не содержит значения в этом столбце".
Попытка привести его к целому числу подобна попытке заставить эту сумму работать:

x = y +
Y плюс что? Вы не знаете, я не знаю, и наверняка ваша база данных тоже не знает! :смеяться:

Вместо этого попробуйте это:
object o = MyGrid.Rows[2].Cells[8].Value;
Index = o == DBNull.Value ? 0 : (int) o;
Или замените ноль другим значением по умолчанию.


AZHAR SAYYAD

Спасибо сэр удовлетворите ответом