In Linq, was ist der Unterschied zwischen .FirstOrDefault und .SingleOrDefault

7

Ich kenne den Unterschied zwischen FirstOrDefault und SingleOrDefault nicht. Wann sollte ich den ersten verwenden und wann sollte ich den zweiten verwenden?

    
ridermansb 05.10.2011, 14:48
quelle

3 Antworten

14

FirstOrDefault() wird verwendet, wenn erwartet wird, dass null oder mehr Ergebnisse in der Eingabesammlung vorhanden sind, und der Aufruf das erste Element zurückgibt, wenn mehrere Ergebnisse vorhanden sind, Default, wenn kein Ergebnis vorhanden ist.

SingleOrDefault() ist für den Fall, dass in der Eingabesammlung null oder eins erwartet wird und der Aufruf das eine Ergebnis zurückgibt, wenn genau ein Ergebnis vorhanden ist. Default if keine Ergebnisse und Ausnahme falls mehr als ein Ergebnis.

    
Bala R 05.10.2011, 14:52
quelle
7

SingleOrDefault löst eine Ausnahme "Sequenz enthält mehr als ein Element" aus, wenn mehr als ein Element vorhanden ist.

    
JontyMC 05.10.2011 14:50
quelle
0

first oderdefault wird die Anzahl der Zeilen übernehmen, wird aber nur die erste Zeile zurückgeben, wenn dies der Fall ist                 null Es kann die Ausnahme behandeln Zuerst wird es die Anzahl der Zeilen aufnehmen, aber es wird nur die erste Zeile zurückgegeben, wenn dies der Fall ist                 null wird die Ausnahme ausgelöst singleordefault es wird nur eine Zeile dauern, aber es zurückgeben kann Ausnahmen behandeln, wenn es null ist Single es wird nur eine Zeile dauern, aber es wird zurückgegeben & amp; kann Ausnahmen nicht behandeln

Wenn Ihre Ergebnismenge 0 Datensätze zurückgibt:

SingleOrDefault gibt den Standardwert für den Typ zurück (z. B. Standard für int ist 0) FirstOrDefault gibt den Standardwert für den Typ zurück Wenn Sie Ergebnis haben, gibt 1 Datensatz zurück:

SingleOrDefault gibt diesen Datensatz zurück FirstOrDefault gibt diesen Datensatz zurück Wenn Ihre Ergebnismenge viele Datensätze zurückgibt:

SingleOrDefault löst eine Ausnahme aus FirstOrDefault gibt den ersten Datensatz zurück Fazit:

Wenn eine Ausnahme ausgelöst werden soll, wenn die Ergebnismenge viele Datensätze enthält, verwenden Sie SingleOrDefault.

Wenn Sie immer 1 Datensatz wollen, unabhängig davon, was das Ergebnis enthält, verwenden Sie FirstOrDefault

    
user3364059 11.03.2014 09:46
quelle

Tags und Links