Wie geben Sie einen Standardwert zurück, wenn eine Abfrage von LINQ to Entities keine Werte zurückgibt

defaultifempty entity-framework linq linq-to-entities

Frage

In einem LINQ to Entities-Ausdruck wie folgt:

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

Wie füge ich einen DefaultIfEmpty-Wert hinzu, damit ich einen Standardwert bekomme, wenn keine Stimme abgegeben wird?

Akzeptierte Antwort

Am Ende entschied ich mich für eine sehr einfache Herangehensweise, die von einer Antwort empfohlen wurde, die später gelöscht wurde:

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);
}

Beliebte Antwort

Wenn Vote ein Referenztyp ist und daher null als Standardwert verwendet, wäre die Verwendung des Null-Koaleszenzoperators:

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


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum