Comment renvoyez-vous une valeur par défaut si une requête LINQ to entities ne renvoie aucune valeur
Dans un LINQ to entities expression comme ceci:
var vote = (from vote in db.Vote where
vote.Voter.Id == user.Id
select v).FirstOrDefault();
Comment ajouter un DefaultIfEmpty valeur, de sorte que quand il n'y a pas de voter, j'aimerais obtenir une valeur par défaut?
source d'informationauteur pupeno
Vous devez vous connecter pour publier un commentaire.
Une autre approche, si
Vote
est un type de référence et utilise donc la valeur null comme valeur par défaut, serait d'utiliser le nul de la coalescence de l'opérateur:Ajouter votre propre méthode d'extension. Par exemple:
Avec cette classe dans le champ d'application, vous pouvez dire:
Bien sûr, votre méthode peut également avoir une surcharge qui renvoie par défaut(T), si c'était ce que vous cherchions. Il y a déjà défini un DefaultIfEmpty extension de la méthode de construction dans la classe d'Extension, donc, j'ai nommé la méthode dans l'exemple "FirstOrDefault", ce qui semble être un meilleur ajustement.
Il suffit d'ajouter la valeur par défaut avant d'obtenir le premier élément.
Notez que vous pouvez maintenant l'utiliser en toute sécurité
First()
au lieu deFirstOrDefault()
.Mise à JOUR
LINQ to Entité ne comptabilise pas les
DefaultIfEmpty()
méthode d'extension. Mais vous pouvez simplement utiliser le nul de la coalescence de l'opérateur.J'ai fini par aller pour une approche très simple qui a été recommandé par une réponse ici, qui a été dernier effacé:
Pour quelque raison que si je tourne le jeu de résultats dans une Liste, la Defaultifempty() fonctionne, je ne sais pas si j'ai par mégarde franchi dans Linq zone.