0

以下に示すように、顧客オブジェクトを設定しています。次のようなものを簡潔にコーディングするにはどうすればよいですか?

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
4

3 に答える 3

0

これを試しましたか?:

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

それが役に立てば幸い。

于 2009-08-25T02:34:13.400 に答える
0

null が含まれている場合、age にはどのような値がありますか?
Age には Nullable(Of Integer) を使用することをお勧めします。

また、DBNull.Value (基になるフィールドに null 値が含まれている場合の比較に使用されます) と比較します。

于 2009-08-25T02:34:34.100 に答える
0

Microsoft.VisualBasic名前空間内には、 という関数がありますIIF。式を評価し、式が true の場合は 1 つの値を返し、false の場合は別の値を返すことによって機能します。

そう

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

新しいバージョンの Visual Studio (2008 ~) では、これはデフォルトで import なしで利用できます (以前はIIF関数で、newIfは演算子です):

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

ではなくDBNull、単にNothingの場合は、null 合体演算子を使用できます。

Dim val = If(objectThatMightBeNothing, DefaultValueToUse)

詳細については、 MSDNを参照してください。

于 2009-08-25T02:40:56.180 に答える