Sdílet prostřednictvím


Enumerable.FirstOrDefault Metoda

Definice

Vrátí první prvek sekvence nebo výchozí hodnotu, pokud nebyl nalezen žádný prvek.

Přetížení

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

Vrátí první prvek sekvence, který splňuje podmínku, nebo zadanou výchozí hodnotu, pokud není nalezen žádný takový prvek.

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

Vrátí první prvek sekvence nebo zadanou výchozí hodnotu, pokud sekvence neobsahuje žádné prvky.

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

Vrátí první prvek sekvence, který splňuje podmínku nebo výchozí hodnotu, pokud se takový prvek nenajde.

FirstOrDefault<TSource>(IEnumerable<TSource>)

Vrátí první prvek sekvence nebo výchozí hodnotu, pokud sekvence neobsahuje žádné prvky.

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

Zdroj:
First.cs
Zdroj:
First.cs
Zdroj:
First.cs

Vrátí první prvek sekvence, který splňuje podmínku, nebo zadanou výchozí hodnotu, pokud není nalezen žádný takový prvek.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource FirstOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate, TSource defaultValue);
public static TSource FirstOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate, TSource defaultValue);
static member FirstOrDefault : seq<'Source> * Func<'Source, bool> * 'Source -> 'Source
<Extension()>
Public Function FirstOrDefault(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean), defaultValue As TSource) As TSource

Parametry typu

TSource

Typ elementů .source

Parametry

source
IEnumerable<TSource>

An IEnumerable<T> , ze které se vrátí prvek.

predicate
Func<TSource,Boolean>

Funkce pro otestování každého prvku pro podmínku.

defaultValue
TSource

Výchozí hodnota, která se má vrátit, pokud je sekvence prázdná.

Návraty

TSource

defaultValue pokud source je prázdný nebo pokud žádný prvek neprojde testem určeným nástrojem predicate. V opačném případě první prvek, source který projde testem určeným nástrojem predicate.

Výjimky

source nebo predicate je null.

Platí pro

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

Zdroj:
First.cs
Zdroj:
First.cs
Zdroj:
First.cs

Vrátí první prvek sekvence nebo zadanou výchozí hodnotu, pokud sekvence neobsahuje žádné prvky.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource FirstOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, TSource defaultValue);
public static TSource FirstOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, TSource defaultValue);
static member FirstOrDefault : seq<'Source> * 'Source -> 'Source
<Extension()>
Public Function FirstOrDefault(Of TSource) (source As IEnumerable(Of TSource), defaultValue As TSource) As TSource

Parametry typu

TSource

Typ elementů .source

Parametry

source
IEnumerable<TSource>

Chcete-li IEnumerable<T> vrátit první prvek z.

defaultValue
TSource

Výchozí hodnota, která se má vrátit, pokud je sekvence prázdná.

Návraty

TSource

defaultValue pokud source je prázdný, v opačném případě první prvek v sourcesouboru .

Výjimky

source je null.

Platí pro

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

Zdroj:
First.cs
Zdroj:
First.cs
Zdroj:
First.cs

Vrátí první prvek sekvence, který splňuje podmínku nebo výchozí hodnotu, pokud se takový prvek nenajde.

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 elementů .source

Parametry

source
IEnumerable<TSource>

An IEnumerable<T> , ze které se vrátí prvek.

predicate
Func<TSource,Boolean>

Funkce pro otestování každého prvku pro podmínku.

Návraty

TSource

default(TSource) pokud source je prázdný nebo pokud žádný prvek neprojde testem určeným nástrojem predicate; v opačném případě první prvek, source který úspěšně projde testem určeným nástrojem predicate.

Výjimky

source nebo predicate je 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. Při druhém volání metody není v poli žádný prvek, který splňuje podmínku.

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 odkazy a typy s možnou hodnotou null je null.

Platí pro

FirstOrDefault<TSource>(IEnumerable<TSource>)

Zdroj:
First.cs
Zdroj:
First.cs
Zdroj:
First.cs

Vrátí první prvek sekvence nebo výchozí hodnotu, pokud sekvence neobsahuje žádné prvky.

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 elementů .source

Parametry

source
IEnumerable<TSource>

Chcete-li IEnumerable<T> vrátit první prvek z.

Návraty

TSource

default(TSource) pokud source je prázdný; v opačném případě první prvek v sourcesouboru .

Výjimky

source je null.

Příklady

Následující příklad kódu ukazuje, jak použít FirstOrDefault<TSource>(IEnumerable<TSource>) na prázdné pole.

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 default(TSource) hodnota není výchozí hodnotou, kterou chcete použít, pokud kolekce neobsahuje žádné prvky. Místo kontroly výsledku nežádoucí výchozí hodnoty a následné změny v případě potřeby můžete použít metodu DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) k určení výchozí hodnoty, kterou chcete použít, pokud je kolekce prázdná. Potom voláním First<TSource>(IEnumerable<TSource>) získáte první prvek. Následující příklad kódu používá obě techniky k získání výchozí hodnoty 1, pokud je kolekce číselných měsíců prázdná. Vzhledem k tomu, že výchozí hodnota pro celé číslo je 0, což neodpovídá žádnému měsíci, musí být výchozí hodnota zadána jako 1. Po dokončení provádění dotazu se u první proměnné výsledku zkontroluje nežádoucí výchozí hodnota. Druhá výsledná proměnná se získá pomocí DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) k zadání výchozí hodnoty 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 odkazy a typy s možnou hodnotou null je null.

Metoda FirstOrDefault neposkytuje způsob, jak zadat výchozí hodnotu. Pokud chcete zadat jinou výchozí hodnotu než default(TSource), použijte metodu popsanou DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) v části Příklad.

Platí pro