Enumerable.FirstOrDefault Metoda

Definice

Vrátí první prvek sekvence nebo výchozí hodnotu, pokud není nalezen žádný element.Returns the first element of a sequence, or a default value if no element is found.

Přetížení

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

Vrátí první prvek sekvence, který splňuje podmínku nebo výchozí hodnotu, pokud žádný takový prvek nebyl nalezen.Returns the first element of the sequence that satisfies a condition or a default value if no such element is found.

FirstOrDefault<TSource>(IEnumerable<TSource>)

Vrátí první prvek sekvence nebo výchozí hodnotu, pokud sekvence neobsahuje žádné prvky.Returns the first element of a sequence, or a default value if the sequence contains no elements.

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

Vrátí první prvek sekvence, který splňuje podmínku nebo výchozí hodnotu, pokud žádný takový prvek nebyl nalezen.Returns the first element of the sequence that satisfies a condition or a default value if no such element is found.

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);
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

Parametry typu

TSource

Typ prvků source .The type of the elements of source.

Parametry

source
IEnumerable<TSource>

IEnumerable<T>A vrátí prvek z.An IEnumerable<T> to return an element from.

predicate
Func<TSource,Boolean>

Funkce pro otestování každého prvku podmínky.A function to test each element for a condition.

Návraty

TSource

default( TSource ) Pokud source je prázdný nebo pokud žádný element nepředá test určený parametrem predicate ; jinak první prvek v source , který projde testem určeným parametrem predicate .default(TSource) if source is empty or if no element passes the test specified by predicate; otherwise, the first element in source that passes the test specified by predicate.

Výjimky

source nebo predicate je null .source or predicate is null.

Příklady

Následující příklad kódu ukazuje, jak použít FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) předáním predikátu.The following code example demonstrates how to use FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) by passing in a predicate. Ve druhém volání metody není v poli, které splňuje podmínku, žádný element.In the second call to the method, there is no element in the array that satisfies the condition.

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.

Poznámky

Výchozí hodnota pro odkaz na typy s možnou hodnotou null je null .The default value for reference and nullable types is null.

FirstOrDefault<TSource>(IEnumerable<TSource>)

Vrátí první prvek sekvence nebo výchozí hodnotu, pokud sekvence neobsahuje žádné prvky.Returns the first element of a sequence, or a default value if the sequence contains no elements.

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);
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

Parametry typu

TSource

Typ prvků source .The type of the elements of source.

Parametry

source
IEnumerable<TSource>

IEnumerable<T>Pro vrácení prvního prvku.The IEnumerable<T> to return the first element of.

Návraty

TSource

default( TSource ) source , pokud je prázdný. v opačném případě první prvek v source .default(TSource) if source is empty; otherwise, the first element in source.

Výjimky

source je null.source is null.

Příklady

Následující příklad kódu ukazuje, jak použít FirstOrDefault<TSource>(IEnumerable<TSource>) v prázdném poli.The following code example demonstrates how to use FirstOrDefault<TSource>(IEnumerable<TSource>) on an empty array.

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

Někdy hodnota default(TSource) není výchozí hodnota, kterou chcete použít, pokud kolekce neobsahuje žádné prvky.Sometimes the value of default(TSource) is not the default value that you want to use if the collection contains no elements. Namísto kontroly výsledku nechtěné výchozí hodnoty a jejich případné změně, můžete použít DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) metodu k určení výchozí hodnoty, kterou chcete použít, pokud je kolekce prázdná.Instead of checking the result for the unwanted default value and then changing it if necessary, you can use the DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) method to specify the default value that you want to use if the collection is empty. Potom zavolejte First<TSource>(IEnumerable<TSource>) k získání prvního prvku.Then, call First<TSource>(IEnumerable<TSource>) to obtain the first element. Následující příklad kódu používá obě metody pro získání výchozí hodnoty 1, pokud je kolekce číselných měsíců prázdná.The following code example uses both techniques to obtain a default value of 1 if a collection of numeric months is empty. Vzhledem k tomu, že výchozí hodnota pro celé číslo je 0, což neodpovídá žádnému měsíci, výchozí hodnota musí být zadána jako 1.Because the default value for an integer is 0, which does not correspond to any month, the default value must be specified as 1 instead. První proměnná výsledku je po dokončení zpracování dotazu kontrolována na nežádoucí výchozí hodnotu.The first result variable is checked for the unwanted default value after the query has finished executing. Druhá výsledná proměnná je získána pomocí DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) k určení výchozí hodnoty 1.The second result variable is obtained by using DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) to specify a default value of 1.

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

Poznámky

Výchozí hodnota pro odkaz na typy s možnou hodnotou null je null .The default value for reference and nullable types is null.

FirstOrDefaultMetoda neposkytuje způsob, jak zadat výchozí hodnotu.The FirstOrDefault method does not provide a way to specify a default value. Pokud chcete zadat výchozí hodnotu, která je jiná než default(TSource) , použijte DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) metodu popsanou v části příklad.If you want to specify a default value other than default(TSource), use the DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) method as described in the Example section.

Platí pro