Comment renvoyer une valeur par défaut si une requête LINQ to entity ne renvoie aucune valeur

defaultifempty entity-framework linq linq-to-entities

Question

Dans une expression LINQ to entity telle que celle-ci:

var vote = (from vote in db.Vote where
    vote.Voter.Id == user.Id
    select v).FirstOrDefault();

Comment ajoutez-vous une valeur DefaultIfEmpty afin que, s'il n'y a pas de vote, j'obtienne une valeur par défaut?

Réponse acceptée

J'ai finalement opté pour une approche très simple, recommandée par une réponse effacée:

var vote = (from vote in db.Vote 
            where vote.Voter.Id == user.Id
            select v).FirstOrDefault();
if (vote == null) {
    vote = new Vote() { .... };
    db.AddToVoteSet(vote);
}

Réponse populaire

Une autre approche, si Vote est un type de référence et utilise donc null comme valeur par défaut, consisterait à utiliser l'opérateur de coalescence nul:

var vote = (db.Vote
   .Where(v => v.Voter.Id == user.Id)
   .FirstOrDefault()) ?? defaultVote;


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi