我正在为一个datarow对象分配另一个datarow对象的值。 例如:
newAddress.AddrId = frenchAddress.AddrId
newAddress.AddrLn1 = frenchAddress.AddrLn1
newAddress.AddrLn2 = frenchAddress.AddrLn2
newAddress.AddrLn3 = frenchAddress.AddrLn3
newAddress.AddrCityNm = frenchAddress.AddrCityNm
newAddress.CntryId = frenchAddress.CntryId
newAddress.ProvId = frenchAddress.ProvId
frenchAddress
中的某些值可能为NULL,因此我最终会收到异常,因为我正在为newAddress
分配DBNull
的值。处理DBNull
的最佳和最干净的方法是什么?无论如何只要在NULL
?
DBNull
使用VB.Net。
答案 0 :(得分:1)
由于这是一个类型化的DataRow
(所以具有命名属性的自动生成类型)已经存在用于此目的的方法:
If frenchAddress.IsAddrCityNmNull Then
newAddress.SetAddrCityNmNull()
Else
newAddress.AddrCityNm = frenchAddress.AddrCityNm
End If
如果它不是类型而是标准DataRow
,您可以使用支持可空类型的SetField
方法,也应该处理这种情况:
newAddress.SetField("ColumnName", frenchAddress.Field(Of String)("ColumnName"))
答案 1 :(得分:1)
您可以将IsDbNull函数与If语句一起使用,例如:
newAddress.AddrLn1 = If (IsDbNull(frenchAddress.AddrLn1), String.Empty, frenchAddress.AddrLine1)
答案 2 :(得分:0)
这最终成为我使用的解决方案,上面两个答案之间有点混合。它似乎工作正常:
newAddress.AddrLn1 = If(frenchAddress.IsAddrLn1Null = True, Nothing, frenchAddress.AddrLn1)