populating كائن من DataTable مع القيمة الافتراضية عند DBNull
-
19-09-2019 - |
سؤال
أنا ملء كائن العميل كما هو موضح أدناه. كيف سأقوم بإطلاعك على شيء مثل ما يلي؟
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 (الذي يستخدم للمقارنة في حالة الحقل الأساسي يحتوي على قيمة فارغة).