LINQ Unique() Exception pour 0 ou plusieurs éléments
J'ai quelques IEnumberable
collection d'éléments. J'utilise .Single()
de trouver un objet dans la collection.
Je choisis d'utiliser Single()
car il ne devrait jamais être un élément spécifique. Toutefois, si l'un n'existe pas, alors j'ai besoin de le créer et de l'ajouter à la collection.
Mon problème est que Single()
lance le même message d'erreur si il n'y a pas d'élément correspondant à l'prédicat ou si il y a plusieurs éléments. Mon idée était de mettre le Single()
appeler à l'intérieur de l'essayer et attraper l'exception, ajouter l'élément, puis de continuer. Cependant, puisque les deux scénarios de jeter le InvalidOperationException
, comment puis-je savoir si sa en raison de l'absence d'éléments ou de plusieurs articles?
Je sais que je peux utiliser First()
mais cela ne veut pas imposer l'idée qu'il devrait y avoir une seule (sans faire de travail supplémentaire).
J'ai pu également utiliser Count()
avant la Single()
appel, mais qui semble juste pour saper le point de Single()
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez est
SingleOrDefault()
L' "ou défaut" signifie, en réalité, elle renvoie la valeur null (pour les types référence) ou quelle que soit la valeur par défaut serait un non-type de référence. Vous aurez besoin à nouveau d'un objet à prendre sa place.
SingleOrNull
, ce qui n'aurait pas été raisonnable.Je ne recommande pas d'utiliser le try/catch dans ce scénario, parce que l'utilisation d'exceptions pour prendre des décisions logiques de ressources coûteuses.
Je vous conseille d'utiliser
SingleOrDefault()
, et vérifier si le résultat est nul. Si il est. Faites de votre création.