Enumerable.FirstOrDefault 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 das erste Element einer Sequenz oder einen Standardwert zurück, wenn kein Element gefunden wird.
Überlädt
| Name | Beschreibung |
|---|---|
| FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) |
Gibt das erste Element der Sequenz zurück, das eine Bedingung oder einen Standardwert erfüllt, wenn kein solches Element gefunden wird. |
| FirstOrDefault<TSource>(IEnumerable<TSource>) |
Gibt das erste Element einer Sequenz oder einen Standardwert zurück, wenn die Sequenz keine Elemente enthält. |
FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)
Gibt das erste Element der Sequenz zurück, das eine Bedingung oder einen Standardwert erfüllt, wenn kein solches Element gefunden wird.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource FirstOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static TSource FirstOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member FirstOrDefault : seq<'Source> * Func<'Source, bool> -> 'Source
<Extension()>
Public Function FirstOrDefault(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> , von dem ein Element zurückgegeben werden soll.
Gibt zurück
default(TSource) wenn source leer ist oder kein Element den angegebenen predicateTest bestanden hat; andernfalls ist das erste Element, das source den durch predicateden angegebenen Test bestanden hat.
Ausnahmen
source oder predicate ist null.
Beispiele
Im folgenden Codebeispiel wird die Verwendung FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) durch Übergeben eines Prädikats veranschaulicht. Im zweiten Aufruf der Methode gibt es kein Element im Array, das die Bedingung erfüllt.
string[] names = { "Hartono, Tommy", "Adams, Terry",
"Andersen, Henriette Thaulow",
"Hedlund, Magnus", "Ito, Shu" };
string firstLongName = names.FirstOrDefault(name => name.Length > 20);
Console.WriteLine("The first long name is '{0}'.", firstLongName);
string firstVeryLongName = names.FirstOrDefault(name => name.Length > 30);
Console.WriteLine(
"There is {0} name longer than 30 characters.",
string.IsNullOrEmpty(firstVeryLongName) ? "not a" : "a");
/*
This code produces the following output:
The first long name is 'Andersen, Henriette Thaulow'.
There is not a name longer than 30 characters.
*/
' Create an array of strings.
Dim names() As String =
{"Hartono, Tommy", "Adams, Terry", "Andersen, Henriette Thaulow", "Hedlund, Magnus", "Ito, Shu"}
' Select the first string in the array whose length is greater than 20.
Dim firstLongName As String =
names.FirstOrDefault(Function(name) name.Length > 20)
' Display the output.
Console.WriteLine($"The first long name is {firstLongName}")
' Select the first string in the array whose length is greater than 30,
' or a default value if there are no such strings in the array.
Dim firstVeryLongName As String =
names.FirstOrDefault(Function(name) name.Length > 30)
Dim text As String = IIf(String.IsNullOrEmpty(firstVeryLongName), "not a", "a")
Console.WriteLine($"There is {text} name longer than 30 characters.")
' This code produces the following output:
'
' The first long name is Andersen, Henriette Thaulow
'
' There is not a name longer than 30 characters.
Hinweise
Der Standardwert für Bezugs- und Nullwerte ist null.
Gilt für:
FirstOrDefault<TSource>(IEnumerable<TSource>)
Gibt das erste Element einer Sequenz oder einen Standardwert zurück, wenn die Sequenz keine Elemente enthält.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource FirstOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source);
public static TSource FirstOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source);
static member FirstOrDefault : seq<'Source> -> 'Source
<Extension()>
Public Function FirstOrDefault(Of TSource) (source As IEnumerable(Of TSource)) As TSource
Typparameter
- TSource
Der Typ der Elemente von source.
Parameter
- source
- IEnumerable<TSource>
Gibt IEnumerable<T> das erste Element zurück.
Gibt zurück
default(TSource) ist source leer, andernfalls das erste Element in source.
Ausnahmen
source ist null.
Beispiele
Im folgenden Codebeispiel wird die Verwendung FirstOrDefault<TSource>(IEnumerable<TSource>) in einem leeren Array veranschaulicht.
int[] numbers = { };
int first = numbers.FirstOrDefault();
Console.WriteLine(first);
/*
This code produces the following output:
0
*/
' Create an empty array.
Dim numbers() As Integer = {}
' Select the first element in the array, or a default value
' if there are not elements in the array.
Dim first As Integer = numbers.FirstOrDefault()
' Display the output.
Console.WriteLine(first)
' This code produces the following output:
'
' 0
Manchmal ist der Wert nicht default(TSource) 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 es 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 First<TSource>(IEnumerable<TSource>) dann auf, um das erste Element abzurufen. Im folgenden Codebeispiel werden beide Techniken verwendet, um einen Standardwert von 1 abzurufen, wenn eine Auflistung numerischer Monate leer ist. Da der Standardwert für eine ganze Zahl 0 ist, was keinem Monat entspricht, 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 der Angabe DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) eines Standardwerts von 1 abgerufen.
List<int> months = new List<int> { };
// Setting the default value to 1 after the query.
int firstMonth1 = months.FirstOrDefault();
if (firstMonth1 == 0)
{
firstMonth1 = 1;
}
Console.WriteLine("The value of the firstMonth1 variable is {0}", firstMonth1);
// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int firstMonth2 = months.DefaultIfEmpty(1).First();
Console.WriteLine("The value of the firstMonth2 variable is {0}", firstMonth2);
/*
This code produces the following output:
The value of the firstMonth1 variable is 1
The value of the firstMonth2 variable is 1
*/
Dim months As New List(Of Integer)(New Integer() {})
' Setting the default value to 1 after the query.
Dim firstMonth1 As Integer = months.FirstOrDefault()
If firstMonth1 = 0 Then
firstMonth1 = 1
End If
Console.WriteLine($"The value of the firstMonth1 variable is {firstMonth1}")
' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim firstMonth2 As Integer = months.DefaultIfEmpty(1).First()
Console.WriteLine($"The value of the firstMonth2 variable is {firstMonth2}")
' This code produces the following output:
'
' The value of the firstMonth1 variable is 1
' The value of the firstMonth2 variable is 1
Hinweise
Der Standardwert für Bezugs- und Nullwerte ist null.
Die FirstOrDefault Methode bietet keine Möglichkeit, einen Standardwert anzugeben. Wenn Sie einen anderen default(TSource)Standardwert als angeben möchten, verwenden Sie die DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) Im Beispielabschnitt beschriebene Methode.