Enumerable.FirstOrDefault Metoda

Definice

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

Přetížení

Name Description
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>, TSource)

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

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

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

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

Zdroj:
First.cs
Zdroj:
First.cs
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 prvků .source

Parametry

source
IEnumerable<TSource>

Vrátí IEnumerable<T> první prvek.

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

Výjimky

source je null.

Platí pro

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

Zdroj:
First.cs
Zdroj:
First.cs
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 nebyl 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 prvků .source

Parametry

source
IEnumerable<TSource>

Vrácení IEnumerable<T> elementu z.

predicate
Func<TSource,Boolean>

Funkce k otestování jednotlivých prvků 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 zkouškou určenou predicate; v opačném případě první prvek, který source projde zkouškou určenou predicate.

Výjimky

source nebo predicate je null.

Platí pro

FirstOrDefault<TSource>(IEnumerable<TSource>)

Zdroj:
First.cs
Zdroj:
First.cs
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 prvků .source

Parametry

source
IEnumerable<TSource>

Vrátí IEnumerable<T> první prvek.

Návraty

TSource

default(TSource) pokud source je prázdný; jinak první prvek v source.

Výjimky

source je null.

Příklady

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

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

default(TSource) Někdy 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 v případě potřeby ji můžete změnit pomocí DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) metody k určení výchozí hodnoty, kterou chcete použít, pokud je kolekce prázdná. Potom voláním First<TSource>(IEnumerable<TSource>) získejte 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 zkontroluje první výsledná proměnná pro nežádoucí výchozí hodnotu. Druhá výsledná proměnná se získá pomocí DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) k určení 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 DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) popsanou v části Příklad.

Platí pro

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

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

Vrátí první prvek sekvence, která splňuje podmínku nebo 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);
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

Parametry

source
IEnumerable<TSource>

Vrácení IEnumerable<T> elementu z.

predicate
Func<TSource,Boolean>

Funkce k otestování jednotlivých prvků pro podmínku.

Návraty

TSource

default(TSource) je-li source prázdný nebo pokud žádný prvek neprojde zkouškou predicateurčenou ; v opačném případě první prvek, který source projde zkouškou určenou predicate.

Výjimky

source nebo predicate je null.

Příklady

Následující příklad kódu ukazuje použití FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) předáním predikátu. Ve druhém volání metody neexistuje žádný prvek v poli, 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