سؤال

أنا ملء كائن العميل كما هو موضح أدناه. كيف سأقوم بإطلاعك على شيء مثل ما يلي؟

If IsDbNull(.Age) Then 
  .Age = 10
Else
  .Age = dataRow("Age")
End If 

إليك السياق الذي أود استخدامه في:

Public Shared Function Retrieve() As List(Of Customer)

  Dim dt As DataTable = Dac.ExecuteDataTable("CustomerRetrieveAll", Nothing)
  Dim customerList As New List(Of Customer)

  For Each dr As DataRow In dt.Rows 
    customerList.Add(New Customer {
                       .CustomerId = CType(dr("CustomerID"), Integer),
                       .LastName = dr("LastName").ToString,
                       .Age = dr("Age").ToString,
                       .FirstName = dr("FirstName").ToString})  
  Next

  Return customerList 
End Function
هل كانت مفيدة؟

المحلول

في حدود Microsoft.VisualBasic مساحة الاسم هناك وظيفة تسمى IIF. وبعد إنه يعمل عن طريق تقييم تعبير وإرجاع قيمة واحدة إذا كان التعبير صحيحا وآخر إذا FALSE.

وبالتالي

.Age = IIF(dr("Age") = DBNull.Value, 10, dr("Age").ToString())

في الإصدارات الأحدث من Visual Studio (2008 ~)، يتوفر هذا بشكل افتراضي دون استيراد استيراد (IIF كان وظيفة، الجديد If هو مشغل):

.Age = If(dr("Age") = DBNull.Value, 10, dr("Age").ToString())

إذا لم يكن كذلك DBNull, ، لكن فقط Nothing, ، يمكنك استخدام المشغل الفاتح NULL

Dim val = If(objectThatMightBeNothing, DefaultValueToUse)

يرى MSDN. لمزيد من التفاصيل.

نصائح أخرى

هل جربت هذا؟:

.Age = IIf(dr("age") is DbNull, 10, dr("age"))

آمل أن يساعد.

ما قيمة العمر يمكن أن يكون لديك إذا كان يحتوي على فارغة؟
أقترح استخدام Nullable (عدد صحيح) للعمر.

أيضا، قارنه ضد DBNull.Value (الذي يستخدم للمقارنة في حالة الحقل الأساسي يحتوي على قيمة فارغة).

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