Utilisation de C #. J'ai une chaîne dateTimeEnd
.
Si la chaîne est au bon format, je souhaite générer un DateTime
et l'assigner à eventCustom.DateTimeEnd de type
public Nullable<System.DateTime> DateTimeEnd { get; set; }
Si dateTimeEnd
est nul ou vide, j'ai besoin de eventCustom.DateTimeEnd
défini sur null.
J'essaie d'y parvenir en utilisant le code suivant mais j'obtiens toujours null pour eventCustom.DateTimeEnd
.
Pourriez-vous s'il vous plaît m'aider à définir ce qui ne va pas dans mon code?
DateTime? dateTimeEndResult;
if (!string.IsNullOrWhiteSpace(dateTimeEnd))
dateTimeEndResult = DateTime.Parse(dateTimeEnd);
eventCustom.DateTimeEnd = dateTimeEndResult = true ? (DateTime?)null : dateTimeEndResult;
On dirait que tu veux juste:
eventCustom.DateTimeEnd = string.IsNullOrWhiteSpace(dateTimeEnd)
? (DateTime?) null
: DateTime.Parse(dateTimeEnd);
Notez que cela lève une exception si dateTimeEnd
n'est pas une date valide.
Une alternative serait:
DateTime validValue;
eventCustom.DateTimeEnd = DateTime.TryParse(dateTimeEnd, out validValue)
? validValue
: (DateTime?) null;
Cela va maintenant définir le résultat à null
si dateTimeEnd
n'est pas valide. Notez que TryParse
traite null
comme une entrée sans aucun problème.
DateTime
est un type de valeur non nullable
DateTime? newdate = null;
Vous pouvez utiliser un Nullable<DateTime>
Cette ligne:
eventCustom.DateTimeEnd = dateTimeEndResult = true ? (DateTime?)null : dateTimeEndResult;
est identique à:
eventCustom.DateTimeEnd = dateTimeEndResult = (true ? (DateTime?)null : dateTimeEndResult);
parce que l'opérateur conditionnel ?
a une priorité plus élevée que l'opérateur d'affectation =
. C'est pourquoi vous obtenez toujours null pour eventCustom.DateTimeEnd
. ( MSDN Ref )
Cela devrait fonctionner:
if (!string.IsNullOrWhiteSpace(dateTimeEnd))
eventCustom.DateTimeEnd = DateTime.Parse(dateTimeEnd);
else
eventCustom.DateTimeEnd = null;
Notez que cela lève une exception si la chaîne n’est pas au format correct.
Vous pouvez écrire DateTime? newdate = null;
Maintenant, je ne peux pas utiliser DateTime?
, J'utilise DBNull.Value
pour tous les types de données. Ça marche très bien.
eventCustom.DateTimeEnd = string.IsNullOrWhiteSpace(dateTimeEnd)
? DBNull.Value
: DateTime.Parse(dateTimeEnd);