Вопрос

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

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 должен улавливать это и выполнять мое альтернативное действие, но этого не происходит?

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

Спасибо!

Это было полезно?

Решение

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

Преобразовать.IsDBNull способ.

Другие советы

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

DBNull.Value == null 
//is always false

DBNull - это специальный класс для сравнения значений, возвращаемых из базы данных, поэтому вам действительно нужно проверить наличие условия null И DBNull.value, если ваш массив содержит и то, И другое.

Редактировать: Извините, если присмотреться повнимательнее к вашему коду, возможно, вам просто нужно отменить свою операцию OR.Если o == null, ваш первый оператор взорвется вместе с вашим исключением.Попробуй:

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

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

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

или

if (o is DBNull)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top