Указанный состав недействителен - десятичный - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь объявить десятичное число, которое будет принимать значение dr ["index"] или значение null, если dr ["index"] равно null.

Вот моя строка кода:

Decimal number = (Decimal)(dr["index"] ?? 0);

Я получил следующую ошибку:

System.Invalid.CastException : 'Specified cast is not valid' 

Знаете ли вы, как решить эту проблему?

Ответы [ 2 ]

4 голосов
/ 04 июля 2019

Я бы пошел в случае DBNull.Value:

Convert.ToDecimal(dr["index"] == DBNull.Value ? 0m : dr["index"])

или в случае нулевого значения:

Convert.ToDecimal(dr["index"] ?? 0m)

Если dr[index] может быть только числовым значением.

0 голосов
/ 04 июля 2019

Я рекомендую использовать Decimal.TryParse вместо:

Decimal d = 0;
if(Decimal.TryParse(dr["index"].ToString(), out d)) {
// Do some stuff here...
}
else {
// Connot Parse, do some other stuff...
}
...