Enumerable.FirstOrDefault Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.
- defaultValue
- TSource
Výchozí hodnota, která se má vrátit, pokud je sekvence prázdná.
Návraty
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
defaultValue
pokud source
je prázdný, v opačném případě první prvek v source
souboru .
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.
Návraty
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
default
(TSource
) pokud source
je prázdný; v opačném případě první prvek v source
souboru .
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.