Проблема вот в этой части:
Data = varCmd.IsDBNull(2) ? null : varCmd.GetDecimal(2)
^-+^ ^----------+-------^
| |
| +-- Decimal type
+-- not a Decimal type
Выражение не компилируется, потому что компилятор не может сделать вывод, что для того, чтобы заставить его работать, он должен сделать последнюю часть десятичным числом, допускающим значение NULL, поэтому он пытается найти тип, который может содержать null
, приземляется на string
и таким образом сообщение об ошибке.
Вам нужно указать, что в качестве результата вы хотите получить десятичное число, допускающее значение NULL, предполагая, что Data
также является десятичным числом, допускающим значение NULL.
Если это так, это будет работать:
Data = varCmd.IsDBNull(2) ? (Decimal?)null : varCmd.GetDecimal(2)
Если это не так, вам нужно решить, что хранить в Data
, если столбец null
(DBNull
), возможно, 0
:
Data = varCmd.IsDBNull(2) ? 0 : varCmd.GetDecimal(2)
person
Lasse V. Karlsen
schedule
01.08.2017
(decimal?) null
, еслиData
имеет типNullable<decimal>
. - person Tetsuya Yamamoto   schedule 01.08.2017null
к необнуляемомуdecimal
. Попробуйте использовать значение по умолчанию вместо нуля, еслиData
равноdecimal
, а неdecimal?
:Data = varCmd.IsDBNull(2) ? (decimal)0 : decimal.Parse(varCmd.GetString(2))
. - person Tetsuya Yamamoto   schedule 01.08.2017