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,它可以有什么值?
我建议对年龄使用 Nullable(Of Integer)。

此外,将其与 DBNull.Value 进行比较(用于在基础字段包含空值的情况下进行比较)。

于 2009-08-25T02:34:34.100 回答
0

Microsoft.VisualBasic命名空间中有一个名为IIF. 它的工作原理是评估一个表达式,如果表达式为真则返回一个值,如果为假则返回另一个值。

所以

.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,您可以使用空合并运算符:

Dim val = If(objectThatMightBeNothing, DefaultValueToUse)

有关详细信息,请参阅MSDN 。

于 2009-08-25T02:40:56.180 回答