Ma vue a une propriété date annulable tels que ...Comment utiliser l'opérateur coalescent null avec la date annulable
[DataType(DataType.Date)]
public DateTime? SanctionExpires { get; set; }
Mais lorsque je tente d'utiliser l'opérateur null-coalescent tels que ...
var test = model.SanctionExpires.Value.ToUniversalTime() ?? model.SanctionExpires;
Je reçois l'erreur suivante ...
opérateur '??' ne peut pas être appliquée aux opérandes de type « datetime » et « datetime »
Je pensais que cela devrait fonctionner parce que je tournerai ma propriété date à nullable et this post suggère qu'il devrait fonctionner aussi. Qu'est-ce que je fais mal?
MISE À JOUR
Pour donner plus de clarté, je veux utiliser null-coaslescing pour affecter un paramètre Dapper qui mettra à jour un champ DateTime dans ma base de données. Le champ peut accepter des valeurs nulles ou des valeurs datetime. En gros, si un utilisateur spécifie une date puis attribuez-lui la date prévue au paramètre autrement affecter null ...
p.Add("@SanctionExpires", model.SanctionExpires.Value.ToUniversalTime() ?? model.SanctionExpires);
Notez que je dois faire la conversion UTC parce que je suis en utilisant SQL Azure qui utilise UTC pour les dates autrement mon temps est de 11 heures (je suis en Australie) si je viens de transmettre une donnée de mon système local. En sql j'utilise une fonction pour décaler la date à mon fuseau horaire avant de mettre à jour la table.
Ma solution actuelle pour le faire fonctionner est ci-dessous, mais je ne sais pas si c'est la façon la plus propre. Ce serait bien d'obtenir en une ligne ...
if (model.SanctionExpires == null)
p.Add("@SanctionExpires", model.SanctionExpires);
else
p.Add("@SanctionExpires", model.SanctionExpires.Value.ToUniversalTime());
Votre question n'a pas vraiment de sens. Pour essayer de comprendre cela (pour nous et vous), essayez de supprimer votre var et d'inclure un type réel - que voulez-vous que votre sortie soit? – Paddy
'SanctionExpires' est un' Nullable ', mais' SanctionExpires.Value' est un 'DateTime'. –
Lorsque 'model.SanctionExpires' est' null', quelle valeur * voulez-vous * pour 'test'? (Ce que vous obtiendriez * avec * ce code (s'il était compilé) est une exception NullReferenceException) –