Ваш читатель SQL возвращает DBNull
, когда значение равно нулю;Преобразование из DBNull
в int?
отсутствует, и оператор с нулевым слиянием не распознает DBNull.Value
как нечто, требующее объединения.
РЕДАКТИРОВАТЬ 3
(Еще одна проблема с вашим исходным кодом: предполагается, что «Комментарии» вернули ноль, если «Комментарии» не ноль, но GetAll()
выдает InvalidCastException
.)
Как указывает hvd,вы можете использовать оператор as с обнуляемыми типами:
objStreamItem.Comments = sqlReader["Comments"] as int?;
listComments = (objStreamItem.Comments ?? 0) > 0 ? Comment.GetAll(objStreamItem.ID) : null;
Однако вы можете уберечься от всего этого, если просто определили Comment.GetAll()
, чтобы возвращать пустой список или нулевую ссылку, когда идентификатор выперейти к нему нет комментариев.