Question

Je suis peuplant l'objet client comme indiqué ci-dessous. Comment puis-je je code de façon concise quelque chose comme ce qui suit?

If IsDbNull(.Age) Then 
  .Age = 10
Else
  .Age = dataRow("Age")
End If 

Voici le contexte que je voudrais l'utiliser dans:

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
Était-ce utile?

La solution

Dans l'espace de noms Microsoft.VisualBasic il y a une fonction appelée IIF. Il fonctionne en évaluant une expression et en retournant une valeur si l'expression est vraie et une autre si elle est fausse.

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

est disponible par défaut sans importer une importation Dans les nouvelles versions de Visual Studio (2008 ~), (IIF était une fonction, la nouvelle If est un opérateur):

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

Si elle n'a pas été DBNull, mais juste Nothing, vous pouvez utiliser l'opérateur null-coalescent:

Dim val = If(objectThatMightBeNothing, DefaultValueToUse)

Voir MSDN pour plus de détails.

Autres conseils

Avez-vous essayé ceci:

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

it helps.

Quelle valeur l'âge peut avoir si elle contient nulle
Je suggère d'utiliser Nullable (Of Integer) pour l'âge.

De plus, la comparer à DBNull.Value (qui est utilisé pour la comparaison dans le cas où le champ sous-jacent contient une valeur nulle).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top