ich habe da mal ne Frage bezüglich DefaultIfEmpty() bei einem IEnumerable im Zusammnenhang mit First()
Ich habe hier eine Methode die mir den ersten Wert einer Liste geben soll oder bei NULL einen neuen erzeugen (GetNewEmptyFreeAccount)
bei accList handelt es sich um ein List<IAccount> Objekt.
public IAccount GetFirstActiveAccount(string hoster)
{
var acc = accList.Where(x => x.Hoster.Name == hoster && x.Active == true).DefaultIfEmpty(GetNewEmptyFreeAccount(hoster)).First();
return acc;
}
Das Problem ist jetzt, dass, obwohl etwas enthalten ist, der die Methode aus DefaultIFEmpty aufruft.
Wenn ich das richtig verstanden liegt das hieran:
Zitat von Enumerable.DefaultIfEmpty<TSource> Abschnitt Hinweise |
Diese Methode wird mit verzögerter Ausführung implementiert. Der Wert der sofortigen Rückgabe ist ein Objekt, in dem alle zum Ausführen der Aktion erforderlichen Informationen gespeichert werden. Die von dieser Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt entweder durch den direkten Aufruf der zugehörigen GetEnumerator-Methode oder mithilfe von foreach in Visual C# oder For Each in Visual Basic aufgelistet wird. |
Meine Frage ist jetzt, kann ich das irgendwie umändern, sodass es funktionieren würde wie ich es mir vorstelle?
Also dass das DefaultIfEmpty die Methpode nicht jedesmal aufruft, sondern wirklich dann wenn die Collection leer ist?
Was muss ich dafür machen, habe schon überlegt aber mir ist noch kein Gedanke gekommen...