Comment puis-je définir un DateTime nullable à null dans VB.NET?
Je suis en train de mettre en place un filtre de plage de dates sur mon INTERFACE, avec des cases à cocher pour dire si un DateTimePicker la valeur doit être utilisée, par exemple,
Dim fromDate As DateTime? = If(fromDatePicker.Checked, fromDatePicker.Value, Nothing)
Encore paramètre fromDate
à Nothing
n'a pas en étant mis à Nothing
mais à "12:00:00', et sur le If
déclaration incorrecte exécute le filtre car startDate
n'est pas Nothing
.
If (Not startDate Is Nothing) Then
list = list.Where(Function(i) i.InvDate.Value >= startDate.Value)
End If
Comment m'assurer startDate
obtient une valeur de Nothing
?
source d'informationauteur ProfK
Vous devez vous connecter pour publier un commentaire.
Le problème c'est que c'est en examinant le côté droit de cette mission première, et de décider qu'il est de type
DateTime
(pas de?
). Puis exécuter la mission.Cela fonctionne:
Parce qu'il force le côté droit du type de
DateTime?
.Comme je l'ai dit dans mon commentaire,
Rien
peut être plus proche de C#'sdefault(T)
plutôt quenull
:Avec VB.NET et EF 6.X pour enregistrer la valeur null est:
Dim nullableData As New Nullable(Of Date)
En plus de @Damien_The_Unbeliever fine de réponse, à l'aide de
New DateTime?
fonctionne aussi:Vous trouverez peut-être que ça ressemble un peu à contre-intuitif, pourquoi peut-être le
CType(Nothing, DateTime?)
est préférable.Utilisation
New Date
comme un nombre magique: