Как DBNull не может равняться DBNull

У меня есть следующая строка кода

if (DBNull.Value.Equals(o) || o != null)

где o object o in row.ItemArray Я продолжаю получать ошибку->

Xml type "List of xdt:untypedAtomic" does not support a conversion from Clr type "DBNull" to Clr type "String".

То, что я не понимаю, является этим, когда я ступаю через свой код это if должен ловить это и выполнять мое альтернативное действие, но оно не делает?

Может кто-то проливать некоторый свет для меня.

Спасибо!

7
задан Refracted Paladin 13 January 2010 в 20:59
поделиться

3 ответа

Попробуйте использовать

Converty.isdbnull метод.

6
ответ дан 6 December 2019 в 19:36
поделиться

Я думаю, что у вас проблема в том, что на самом деле

DBNull.Value == null 
//is always false

DBNull - это специальный класс для сравнения по значкам, возвращаемым из БД, чтобы вы действовали должны проверить нулевое состояние и DBNull.Value, если ваш массив содержит оба.

Отредактируйте: Извините ближе к вашему коду, вам может просто понадобиться обратить вспять или работать. Если O == NULL, ваше первое утверждение взорвется с помощью вашего исключения. Попробуйте:

if (o != null || o == DBNull.Value) 
6
ответ дан 6 December 2019 в 19:36
поделиться

Может быть таким сравнением помогает

if ( !o.GetType().Equals( DBNull.Value ) )

или

if (o is DBNull)
1
ответ дан 6 December 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: