Fügen Sie Ihre eigene Erweiterungsmethode hinzu. Zum Beispiel:
public static class Extension
{
public static T FirstOrDefault(this IEnumerable<T> sequence, T defaultValue)
{
return sequence.Any() ? sequence.First() : defaultValue;
}
}
Mit dieser Klasse in Umfang, können Sie sagen:
var vote = (from vote in db.Vote where
vote.Voter.Id == user.Id
select v).FirstOrDefault(yourDefaultValue);
Natürlich können Sie Ihre Methode auch eine Überlastung, die Standard (T) zurückgibt, wenn das war, was man wo Auf der Suche nach. Es ist bereits eine DefaultIfEmpty-Erweiterungsmethode in der integrierten Extension-Klasse definiert, daher habe ich die Methode im Beispiel "FirstOrDefault" benannt, die besser passt.
FYI, das hat deine ursprüngliche Frage nicht befriedigt. Sie haben explizit darum gebeten, dass ein Standardwert zurückgegeben wird und kein neuer Wert erstellt wird, wenn dieser nicht bereits existiert. (Das ist feiner Code, tut einfach nicht, was Sie gefragt haben.) – BenSwayne