سؤال

لدي سطر التعليمات البرمجية التالي

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 يجب أن يتم اصطياد هذا يؤدي بديلة العمل ولكنها لا ؟

يمكن للشخص يرجى إلقاء بعض الضوء بالنسبة لي.

شكرا لك!

هل كانت مفيدة؟

المحلول

وحاول استخدام

Convert.IsDBNull الأسلوب.

نصائح أخرى

أعتقد أنك المشكلة هي أنه في الواقع

DBNull.Value == null 
//is always false

على DBNull هي فئة خاصة من أجل إجراء مقارنات على القيم التي يتم إرجاعها من dB لذا في الحقيقة تحتاج إلى التحقق فارغة الشرط و DBNull.القيمة إذا كان الصفيف الخاص بك يحتوي على حد سواء.

تحرير: آسف عن قرب في التعليمات البرمجية الخاصة بك قد تحتاج فقط إلى عكس الخاص بك أو العملية.إذا س == null أول بيان ستفجر مع استثناء.محاولة:

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

وربما تكون هذه المقارنة يساعد

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

أو

if (o is DBNull)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top