linq .Valeur Nullable Objet doit avoir une valeur. Comment l'ignorer?
J'ai quelques linq code qui est parfois null
:
cbo3.ItemsSource = empty.Union(from a in
(from b in CompleteData
select b.TourOpID).Distinct()
select new ComboBoxItemString() { ValueString = a.Value.ToString() });
Mais TourOpID
est parfois null
de lancer une erreur sur a.Value.ToString()
. Comment puis-je résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Le problème se produit car vous avez accès à la
Value
de la propriété d'unNullable
type qui estnull
(ou, plus précisément, dontHasValue
propriété estfalse
). Comment résoudre ce problème dépend de ce que vous voulez faire:Si vous souhaitez filtrer les éléments où
TourOpID
est null, il suffit d'ajouter unwhere
clause:Si vous souhaitez utiliser une valeur de remplacement, par exemple
0
, siTourOpID
est null, utilisez le null coalescence de l'opérateur??
, qui convertit votreint?
dans unint
:ou, alternativement,
Si vous voulez juste pour afficher une autre zone de liste déroulante entrée si
TourOpID
est null, l'utilisation de l'opérateur ternaire?:
:Si vous souhaitez afficher une chaîne de caractères vide si
a
est nulle, la solution est encore plus simple:depuis Nullable.ToString retourne une chaîne vide s'il n'a pas de valeur.
utilisation
where
Pourquoi ne pas simplement utiliser
ValueString = a.ToString()
au lieu deValueString = a.Value.ToString()
. Sia
a une valeur, il sera de retour cette valeur de chaîne, si ce n'est pasa.ToString()
sera renvoie la chaîne vide.La sortie est: