Enumerable.SingleOrDefault Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt ein einzelnes spezifisches Element einer Sequenz oder einen Standardwert zurück, wenn dieses Element nicht gefunden wird
Überlädt
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 mehrere Elemente in der Sequenz vorhanden sind. |
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>, 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 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 mehrere Elemente in der Sequenz vorhanden sind.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, TSource defaultValue);
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, TSource defaultValue);
static member SingleOrDefault : seq<'Source> * 'Source -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource), defaultValue As TSource) As TSource
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
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.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source);
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
public static TSource? SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
static member SingleOrDefault : seq<'Source> -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource)) As TSource
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 das einzige Element eines Arrays ausgewählt SingleOrDefault<TSource>(IEnumerable<TSource>) wird.
string[] fruits1 = { "orange" };
string fruit1 = fruits1.SingleOrDefault();
Console.WriteLine(fruit1);
/*
This code produces the following output:
orange
*/
' Create an array that contains one item.
Dim fruits1() As String = {"orange"}
' Get the single item in the array or else a default value.
Dim result As String = fruits1.SingleOrDefault()
' Display the result.
Console.WriteLine($"First array: {result}")
Im folgenden Codebeispiel wird veranschaulicht, dass ein Standardwert zurückgegeben wird, SingleOrDefault<TSource>(IEnumerable<TSource>) wenn die Sequenz leer ist.
string[] fruits2 = { };
string fruit2 = fruits2.SingleOrDefault();
Console.WriteLine(
String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);
/*
This code produces the following output:
No such string!
*/
' Create an empty array.
Dim fruits2() As String = {}
result = String.Empty
' Get the single item in the array or else a default value.
result = fruits2.SingleOrDefault()
' Display the result.
Dim output As String =
IIf(String.IsNullOrEmpty(result), "No single item found", result)
Console.WriteLine($"Second array: {output}")
' This code produces the following output:
'
' First array: orange
' Second array: No single item found
Manchmal ist der Wert default(TSource)
nicht der Standardwert, den Sie verwenden möchten, wenn die Auflistung keine Elemente enthält. Anstatt das Ergebnis für den unerwünschten Standardwert zu überprüfen und dann 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 Single<TSource>(IEnumerable<TSource>) dann auf, um das Element abzurufen. Im folgenden Codebeispiel werden beide Techniken verwendet, um einen Standardwert von 1 abzurufen, wenn eine Sammlung von Seitenzahlen leer ist. Da der Standardwert für eine ganze Zahl 0 ist, was in der Regel 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 DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) eines Standardwerts von 1 abgerufen.
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
*/
Dim pageNumbers() As Integer = {}
' Setting the default value to 1 after the query.
Dim pageNumber1 As Integer = pageNumbers.SingleOrDefault()
If pageNumber1 = 0 Then
pageNumber1 = 1
End If
Console.WriteLine($"The value of the pageNumber1 variable is {pageNumber1}")
' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim pageNumber2 As Integer = pageNumbers.DefaultIfEmpty(1).Single()
Console.WriteLine($"The value of the pageNumber2 variable is {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 Referenz- und Null-Typen ist null
.
Die SingleOrDefault Methode bietet keine Möglichkeit, einen Standardwert anzugeben. Wenn Sie einen anderen Standardwert angeben möchten als default(TSource)
, verwenden Sie die DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) Methode wie im Beispielabschnitt beschrieben.
Gilt für
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.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
public static TSource? SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member SingleOrDefault : seq<'Source> * Func<'Source, bool> -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As TSource
Typparameter
- TSource
Der Typ der Elemente von source
.
Parameter
- source
- IEnumerable<TSource>
Ein IEnumerable<T>, aus dem ein einzelnes Element zurückgegeben werden soll
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>) Sie das einzige Element eines Arrays auswählen, das eine Bedingung erfüllt.
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
*/
' Create an array of strings.
Dim fruits() As String =
{"apple", "banana", "mango", "orange", "passionfruit", "grape"}
' Get the single item in the array whose length is > 10.
Dim fruit1 As String =
fruits.SingleOrDefault(Function(fruit) fruit.Length > 10)
' Display the result.
Console.WriteLine($"First array: {fruit1}")
Im folgenden Codebeispiel wird veranschaulicht, dass ein Standardwert zurückgegeben wird, wenn die Sequenz keine Elemente enthält, SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) die die Bedingung erfüllen.
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!
*/
' Get the single item in the array whose length is > 15.
Dim fruit2 As String =
fruits.SingleOrDefault(Function(fruit) fruit.Length > 15)
' Display the result.
Dim output As String =
IIf(String.IsNullOrEmpty(fruit2), "No single item found", fruit2)
Console.WriteLine($"Second array: {output}")
' This code produces the following output:
'
' First array: passionfruit
' Second array: No single item found
Hinweise
Der Standardwert für Referenz- und Null-Typen ist null
.
Gilt für
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 mehrere Elemente die Bedingung erfüllen.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate, TSource defaultValue);
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate, TSource defaultValue);
static member SingleOrDefault : seq<'Source> * Func<'Source, bool> * 'Source -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean), defaultValue As TSource) As TSource
Typparameter
- TSource
Der Typ der Elemente von source
.
Parameter
- source
- IEnumerable<TSource>
Ein IEnumerable<T>, aus dem ein einzelnes 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, die 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.