1

私は使う傾向があります

If Not IsDBNull(dr("data")) Then
     myData = dr("data")
End If

nullをキャッチします。もっと良い方法はありますか?これを何度も使っているようですが?誰もがこれをチェックする関数を書く

mydata = IfNotNull("data")

返される可能性のあるさまざまなデータ型を処理する方法がわかりません。考えてくれてありがとう!

4

1 に答える 1

4

CLRオブジェクトがNullableである場合、VB.NETを使用していたときに、次の拡張メソッドを使用しました。

    Private Function GetNullable(Of T As Structure)(ByVal row As System.Data.DataRow, ByVal fieldname As String, ByVal convert As Conversion(Of T)) As Nullable(Of T)
        Dim nullable As Nullable(Of T)
        If System.Convert.IsDBNull(row(fieldname)) Then
            nullable = Nothing
        Else
            nullable = convert(row, fieldname)
        End If
        Return nullable
    End Function

次の代理人とConversion(Of T)

Private Delegate Function Conversion(Of T)(ByVal row As System.Data.DataRow, ByVal fieldname As String) As T

次に、関連するデータ型の拡張機能を重ねます。

    <Extension()> _
    Public Function GetDouble(ByVal row As System.Data.DataRow, ByVal name As String) As Double
        Return Convert.ToDouble(row(name))
    End Function

    <Extension()> _
    Public Function GetNullableDouble(ByVal row As System.Data.DataRow, ByVal name As String) As System.Nullable(Of Double)
        Return GetNullable(Of Double)(row, name, AddressOf GetDouble)
    End Function

最後に、私は使用することができます:

Dim amount As Double? = dr.GetNullableDouble("amount")
于 2010-09-07T18:31:28.027 に答える