Auf Englisch lesen

Freigeben über


Enumerable.SingleOrDefault Methode

Definition

Gibt ein einzelnes spezifisches Element einer Sequenz oder einen Standardwert zurück, wenn dieses Element nicht gefunden wird

Überlädt

SingleOrDefault<TSource>(IEnumerable<TSource>)

Gibt das einzige Element einer Sequenz oder einen Standardwert zurück, wenn die Sequenz leer ist. Diese Methode löst eine Ausnahme aus, wenn mehrere Elemente in der Sequenz vorhanden sind.

SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Gibt das einzige Element einer Sequenz, das eine angegebene Bedingung erfüllt, oder einen Standardwert zurück, wenn kein solches Element vorhanden ist. Diese Methode löst eine Ausnahme aus, wenn mehrere Elemente die Bedingung erfüllen.

SingleOrDefault<TSource>(IEnumerable<TSource>, TSource)

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

SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource)

Gibt das einzige Element einer Sequenz zurück, das eine angegebene Bedingung erfüllt, oder einen angegebenen Standardwert, wenn kein solches Element vorhanden ist; Diese Methode löst eine Ausnahme aus, wenn mehr als ein Element die Bedingung erfüllt.

SingleOrDefault<TSource>(IEnumerable<TSource>)

Quelle:
Single.cs
Quelle:
Single.cs
Quelle:
Single.cs

Gibt das einzige Element einer Sequenz oder einen Standardwert zurück, wenn die Sequenz leer ist. Diese Methode löst eine Ausnahme aus, wenn mehrere Elemente in der Sequenz vorhanden sind.

C#
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
C#
public static TSource? SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
IEnumerable<TSource>

Ein IEnumerable<T>, dessen einziges Element zurückgegeben werden soll

Gibt zurück

TSource

Das einzige Element der Eingabesequenz oder default(TSource), wenn die Sequenz keine Elemente enthält

Ausnahmen

source ist null.

Die Eingabesequenz enthält mehr als ein Element.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie SingleOrDefault<TSource>(IEnumerable<TSource>) das einzige Element eines Arrays ausgewählt wird.

C#
string[] fruits1 = { "orange" };

string fruit1 = fruits1.SingleOrDefault();

Console.WriteLine(fruit1);

/*
 This code produces the following output:

 orange
*/

Im folgenden Codebeispiel wird veranschaulicht, dass SingleOrDefault<TSource>(IEnumerable<TSource>) ein Standardwert zurückgegeben wird, wenn die Sequenz leer ist.

C#
string[] fruits2 = { };

string fruit2 = fruits2.SingleOrDefault();

Console.WriteLine(
    String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);

/*
 This code produces the following output:

 No such string!
*/

Manchmal ist der Wert von default(TSource) nicht der Standardwert, den Sie verwenden möchten, wenn die Auflistung keine Elemente enthält. Anstatt das Ergebnis auf den unerwünschten Standardwert zu überprüfen und ihn bei Bedarf zu ändern, können Sie die DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) -Methode verwenden, um den Standardwert anzugeben, den Sie verwenden möchten, wenn die Auflistung leer ist. Rufen Sie dann auf Single<TSource>(IEnumerable<TSource>) , um das -Element abzurufen. Im folgenden Codebeispiel werden beide Techniken verwendet, um den Standardwert 1 abzurufen, wenn eine Sammlung von Seitenzahlen leer ist. Da der Standardwert für eine ganze Zahl 0 ist, was normalerweise keine gültige Seitenzahl ist, muss der Standardwert stattdessen als 1 angegeben werden. Die erste Ergebnisvariable wird nach Abschluss der Ausführung der Abfrage auf den unerwünschten Standardwert überprüft. Die zweite Ergebnisvariable wird mithilfe von verwendet, DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) um den Standardwert 1 anzugeben.

C#
int[] pageNumbers = { };

// Setting the default value to 1 after the query.
int pageNumber1 = pageNumbers.SingleOrDefault();
if (pageNumber1 == 0)
{
    pageNumber1 = 1;
}
Console.WriteLine("The value of the pageNumber1 variable is {0}", pageNumber1);

// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int pageNumber2 = pageNumbers.DefaultIfEmpty(1).Single();
Console.WriteLine("The value of the pageNumber2 variable is {0}", pageNumber2);

/*
 This code produces the following output:

 The value of the pageNumber1 variable is 1
 The value of the pageNumber2 variable is 1
*/

Hinweise

Der Standardwert für Verweis- und NULLable-Typen ist null.

Die SingleOrDefault -Methode bietet keine Möglichkeit, einen Standardwert anzugeben. Wenn Sie einen anderen Standardwert als default(TSource)angeben möchten, verwenden Sie die DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) -Methode, wie im Abschnitt Beispiel beschrieben.

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Quelle:
Single.cs
Quelle:
Single.cs
Quelle:
Single.cs

Gibt das einzige Element einer Sequenz, das eine angegebene Bedingung erfüllt, oder einen Standardwert zurück, wenn kein solches Element vorhanden ist. Diese Methode löst eine Ausnahme aus, wenn mehrere Elemente die Bedingung erfüllen.

C#
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
C#
public static TSource? SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
IEnumerable<TSource>

Ein IEnumerable<T>, aus dem ein einzelnes Element zurückgegeben werden soll

predicate
Func<TSource,Boolean>

Eine Funktion zum Überprüfen eines Elements auf eine Bedingung.

Gibt zurück

TSource

Gibt das einzige Element der Eingabesequenz, das die Bedingung erfüllt, oder default(TSource) zurück, wenn ein solches Element nicht gefunden wird.

Ausnahmen

source oder predicate ist null.

Die Bedingung in predicate wird von mehreren Elementen erfüllt.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) das einzige Element eines Arrays ausgewählt wird, das eine Bedingung erfüllt.

C#
string[] fruits = { "apple", "banana", "mango",
                      "orange", "passionfruit", "grape" };

string fruit1 = fruits.SingleOrDefault(fruit => fruit.Length > 10);

Console.WriteLine(fruit1);

/*
 This code produces the following output:

 passionfruit
*/

Das folgende Codebeispiel veranschaulicht, dass SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) einen Standardwert zurückgibt, wenn die Sequenz keine Elemente enthält, die die Bedingung erfüllen.

C#
string fruit2 =
    fruits.SingleOrDefault(fruit => fruit.Length > 15);

Console.WriteLine(
    String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);

/*
 This code produces the following output:

 No such string!
*/

Hinweise

Der Standardwert für Verweis- und NULLable-Typen ist null.

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

SingleOrDefault<TSource>(IEnumerable<TSource>, TSource)

Quelle:
Single.cs
Quelle:
Single.cs
Quelle:
Single.cs

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

C#
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, TSource defaultValue);

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
IEnumerable<TSource>

Ein IEnumerable<T>, dessen einziges Element zurückgegeben werden soll

defaultValue
TSource

Der Standardwert, der zurückgegeben werden soll, wenn die Sequenz leer ist.

Gibt zurück

TSource

Das einzelne Element der Eingabesequenz oder defaultValue , wenn die Sequenz keine Elemente enthält.

Ausnahmen

source ist null.

Die Eingabesequenz enthält mehr als ein Element.

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET 6, 7, 8, 9

SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource)

Quelle:
Single.cs
Quelle:
Single.cs
Quelle:
Single.cs

Gibt das einzige Element einer Sequenz zurück, das eine angegebene Bedingung erfüllt, oder einen angegebenen Standardwert, wenn kein solches Element vorhanden ist; Diese Methode löst eine Ausnahme aus, wenn mehr als ein Element die Bedingung erfüllt.

C#
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate, TSource defaultValue);

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
IEnumerable<TSource>

Ein IEnumerable<T>, aus dem ein einzelnes Element zurückgegeben werden soll

predicate
Func<TSource,Boolean>

Eine Funktion zum Überprüfen eines Elements auf eine Bedingung.

defaultValue
TSource

Der Standardwert, der zurückgegeben werden soll, wenn die Sequenz leer ist.

Gibt zurück

TSource

Das einzelne Element der Eingabesequenz, das die Bedingung erfüllt, oder defaultValue , wenn kein solches Element gefunden wird.

Ausnahmen

source oder predicate ist null.

Die Bedingung in predicate wird von mehreren Elementen erfüllt.

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET 6, 7, 8, 9