2 Stimmen

linq join on null

Was ist der Unterschied zwischen einem Single und einem SingleOrDefault?

Danke.

4voto

Mark Byers Punkte 761508

Der Unterschied besteht darin, wie sie eine leere Sequenz behandeln.

  • Single löst eine Ausnahme aus, wenn kein Element gefunden wird.
  • SingleOrDefault gibt den Wert default(T) wenn kein Element gefunden wird. Bei Referenztypen und nullbaren Werten ist der Standardwert null. Bei nicht-nullbaren Werttypen ist er 0 oder ähnlich.

のことです。 First et FirstOrDefault Methoden sind ebenfalls verwandt. Hier sind alle vier in einer Tabelle aufgeführt:

method           no records  multiple records
---------------------------------------------
Single           exception   exception       
SingleOrDefault  default(T)  exception       
First            exception   first record    
FirstOrDefault   default(T)  first record    

Alle diese Methoden haben auch eine Überladung, die ein Prädikat annimmt.

Eine weitere verwandte Methode ist DefaultIfEmpty mit dem Sie angeben können, was der Standardwert sein soll, wenn die Sequenz leer ist, anstatt einfach den Standardwert für den Typ zu verwenden.

3voto

Refugee Punkte 473

Single:

Gibt das einzige Element einer Sequenz zurück, das die angegebene Bedingung erfüllt, und löst eine Ausnahme aus, wenn mehr als ein solches Element existiert.

Einzeln oder Standard:

Gibt das einzige Element einer Sequenz zurück oder einen Standardwert, wenn die Sequenz leer ist; diese Methode löst eine Ausnahme aus, wenn es mehr als ein Element in der Sequenz gibt.

Sie können also SingleOrDefault verwenden, um eine Eigenschaft/Spalte mit einem Standardwert aufzufüllen, wenn Sie nicht wollen, dass diese Eigenschaft/Spalte NULLs akzeptiert.

1voto

Justin Niessner Punkte 235353

Single löst eine Exception aus, wenn die Abfrage nicht nur ein einziges Ergebnis liefert.

SingleOrDefault löst nur dann eine Exception aus, wenn es mehr als ein Ergebnis für Ihre Abfrage gibt. Wenn es keine Ergebnisse gibt, erhalten Sie einen Standardwert zurück (das ist normalerweise null ).

1voto

Tim Jarvis Punkte 17605

Auch es ist eine Art analagous zu einer äußeren Verknüpfung in SQL, wenn in einem Linq Join verwendet.

0voto

Single löst eine Ausnahme aus, wenn es mehr als ein Ergebnis gibt. SingleOrDefault (ich nehme an, Sie meinten SingleOrDefault und nicht SingleifDefault) gibt null zurück, wenn es mehr als ein Ergebnis gibt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X