質問

以下に示すように、

私は、顧客オブジェクトを移入しています。どのように私は簡潔に次のようなものをコーディングでしょうか?

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の場合式が真と別である場合は、1つの値を返すことによって動作します。

だから、

.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())

それは、ちょうどDBNullNothingていなかった場合は、nullで合体演算子を使用することができます:

Dim val = If(objectThatMightBeNothing, DefaultValueToUse)

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

他のヒント

あなたはこれを試してみました:?

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

それがお役に立てば幸いです。

年齢はそれがヌル含まれている場合はどのような価値を持つことができますか?
私は年齢のために(整数)のNullableを使用することをお勧めします。

また、(基本となるフィールドがヌル値を含む場合には比較のために使用される)DBNull.Valueのに対してそれを比較します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top