Le code que vous voulez est (je l'espère) ..
If MyNullableDateObject.HasValue Then
TextValue = FormatDateTime(MyNullableDateObject.Value)
Else
TextValue = "nada"
End If
Si le champ SQL accepte les valeurs NULL alors le concepteur LINQ to SQL mappe à un type .net Nullable, pour instance SQL DateTime sera mappé au type appelé Date ?. Si vous regardez les propriétés du champ dans le concepteur Linq to SQL, il doit avoir une propriété "Nullable" qui, si le schéma SQL autorise les valeurs NULL dans ce champ, sera définie sur true.
Les types de date non nulles (c'est-à-dire ordinaires) sont des types de valeur et non des types d'objet, donc "Is Nothing" n'aide pas. IsDBNull est pour les types sous System.Data.SqlTypes, mais Linq to SQL correspond aux types .Net "natifs", ce qui n'aide pas non plus.
Voir - Nulllable Types
EDIT
Vous pourriez envisager de renommer la variable valeur à quelque chose d'autre, (comme je l'ai fait ci-dessus) depuis bien sûr, ce n'est pas un type de valeur, la valeur est un mauvais nom.
Notez également que dans le type VB Nullable peut être déclarée de deux manières équivalentes
Dim d As Date?
Dim d As Nullable(Of Date)
Hope this sens.
Son réellement value.value. Je songerais aussi à renommer 'value'; p – Shawn
Oui, c'est une bonne idée. La valeur n'est pas une valeur; exactement! –
Ajout de HasValue jeter un "membre public 'HasValue' sur le type 'String' non trouvé" exception. Ensuite, je pense que String.IsNUllOrEmpty (d) va le détecter, mais non. –