Enumerable.SingleOrDefault 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í jeden konkrétní prvek sekvence nebo výchozí hodnotu, pokud nebyl nalezen.
Přetížení
SingleOrDefault<TSource>(IEnumerable<TSource>) |
Vrátí jediný prvek sekvence, nebo výchozí hodnotu, pokud sekvence je prázdná; tato metoda vyvolá výjimku, pokud je v sekvenci více než jeden prvek. |
SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) |
Vrátí jediný prvek sekvence, která splňuje zadanou podmínku nebo výchozí hodnotu, pokud žádný takový prvek neexistuje; Tato metoda vyvolá výjimku, pokud více než jeden prvek splňuje podmínku. |
SingleOrDefault<TSource>(IEnumerable<TSource>, TSource) |
Vrátí jediný prvek sekvence, nebo zadaná výchozí hodnota, pokud sekvence je prázdná; tato metoda vyvolá výjimku, pokud je v sekvenci více než jeden prvek. |
SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource) |
Vrátí jediný prvek sekvence, která splňuje zadanou podmínku, nebo zadanou výchozí hodnotu, pokud neexistuje žádný takový prvek; Tato metoda vyvolá výjimku, pokud více než jeden prvek splňuje podmínku. |
SingleOrDefault<TSource>(IEnumerable<TSource>)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
Vrátí jediný prvek sekvence, nebo výchozí hodnotu, pokud sekvence je prázdná; tato metoda vyvolá výjimku, pokud je v sekvenci více než jeden prvek.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source);
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
public static TSource? SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
static member SingleOrDefault : seq<'Source> -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource)) As TSource
Parametry typu
- TSource
Typ prvků objektu source
.
Parametry
- source
- IEnumerable<TSource>
K IEnumerable<T> vrácení jediného prvku .
Návraty
Jeden prvek vstupní sekvence nebo default
(TSource
) pokud sekvence neobsahuje žádné prvky.
Výjimky
source
je null
.
Vstupní sekvence obsahuje více než jeden prvek.
Příklady
Následující příklad kódu ukazuje, jak použít SingleOrDefault<TSource>(IEnumerable<TSource>) k výběru jediného prvku pole.
string[] fruits1 = { "orange" };
string fruit1 = fruits1.SingleOrDefault();
Console.WriteLine(fruit1);
/*
This code produces the following output:
orange
*/
' Create an array that contains one item.
Dim fruits1() As String = {"orange"}
' Get the single item in the array or else a default value.
Dim result As String = fruits1.SingleOrDefault()
' Display the result.
Console.WriteLine($"First array: {result}")
Následující příklad kódu ukazuje, že SingleOrDefault<TSource>(IEnumerable<TSource>) vrací výchozí hodnotu, když je posloupnost prázdná.
string[] fruits2 = { };
string fruit2 = fruits2.SingleOrDefault();
Console.WriteLine(
String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);
/*
This code produces the following output:
No such string!
*/
' Create an empty array.
Dim fruits2() As String = {}
result = String.Empty
' Get the single item in the array or else a default value.
result = fruits2.SingleOrDefault()
' Display the result.
Dim output As String =
IIf(String.IsNullOrEmpty(result), "No single item found", result)
Console.WriteLine($"Second array: {output}")
' This code produces the following output:
'
' First array: orange
' Second array: No single item found
Někdy hodnota default(TSource)
není výchozí hodnotou, kterou chcete použít, pokud kolekce neobsahuje žádné prvky. Místo kontroly nežádoucí výchozí hodnoty ve výsledku 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 Single<TSource>(IEnumerable<TSource>) získáte element . Následující příklad kódu používá obě techniky k získání výchozí hodnoty 1, pokud kolekce čísel stránek je prázdná. Vzhledem k tomu, že výchozí hodnota pro celé číslo je 0, což obvykle není platné číslo stránky, musí být výchozí hodnota zadána jako 1. Po dokončení provádění dotazu se v první výsledné proměnné vyhledá nežádoucí výchozí hodnota. Druhá výsledná proměnná se získá pomocí DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) k určení výchozí hodnoty 1.
int[] pageNumbers = { };
// Setting the default value to 1 after the query.
int pageNumber1 = pageNumbers.SingleOrDefault();
if (pageNumber1 == 0)
{
pageNumber1 = 1;
}
Console.WriteLine("The value of the pageNumber1 variable is {0}", pageNumber1);
// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int pageNumber2 = pageNumbers.DefaultIfEmpty(1).Single();
Console.WriteLine("The value of the pageNumber2 variable is {0}", pageNumber2);
/*
This code produces the following output:
The value of the pageNumber1 variable is 1
The value of the pageNumber2 variable is 1
*/
Dim pageNumbers() As Integer = {}
' Setting the default value to 1 after the query.
Dim pageNumber1 As Integer = pageNumbers.SingleOrDefault()
If pageNumber1 = 0 Then
pageNumber1 = 1
End If
Console.WriteLine($"The value of the pageNumber1 variable is {pageNumber1}")
' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim pageNumber2 As Integer = pageNumbers.DefaultIfEmpty(1).Single()
Console.WriteLine($"The value of the pageNumber2 variable is {pageNumber2}")
' This code produces the following output:
' The value of the pageNumber1 variable is 1
' The value of the pageNumber2 variable is 1
Poznámky
Výchozí hodnota odkazových typů a typů s možnou hodnotou null je null
.
Metoda SingleOrDefault 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
SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
Vrátí jediný prvek sekvence, která splňuje zadanou podmínku nebo výchozí hodnotu, pokud žádný takový prvek neexistuje; Tato metoda vyvolá výjimku, pokud více než jeden prvek splňuje podmínku.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
public static TSource? SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member SingleOrDefault : seq<'Source> * Func<'Source, bool> -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As TSource
Parametry typu
- TSource
Typ prvků objektu source
.
Parametry
- source
- IEnumerable<TSource>
Chcete-li IEnumerable<T> vrátit jeden prvek z.
Návraty
Jeden prvek vstupní sekvence, který splňuje podmínku, nebo default
(TSource
) pokud není nalezen žádný takový prvek.
Výjimky
source
nebo predicate
je null
.
Více než jeden prvek splňuje podmínku v predicate
.
Příklady
Následující příklad kódu ukazuje, jak použít SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) k výběru jediného prvku pole, který splňuje podmínku.
string[] fruits = { "apple", "banana", "mango",
"orange", "passionfruit", "grape" };
string fruit1 = fruits.SingleOrDefault(fruit => fruit.Length > 10);
Console.WriteLine(fruit1);
/*
This code produces the following output:
passionfruit
*/
' Create an array of strings.
Dim fruits() As String =
{"apple", "banana", "mango", "orange", "passionfruit", "grape"}
' Get the single item in the array whose length is > 10.
Dim fruit1 As String =
fruits.SingleOrDefault(Function(fruit) fruit.Length > 10)
' Display the result.
Console.WriteLine($"First array: {fruit1}")
Následující příklad kódu ukazuje, že SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) vrací výchozí hodnotu, pokud sekvence neobsahuje žádné prvky, které splňují podmínku.
string fruit2 =
fruits.SingleOrDefault(fruit => fruit.Length > 15);
Console.WriteLine(
String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);
/*
This code produces the following output:
No such string!
*/
' Get the single item in the array whose length is > 15.
Dim fruit2 As String =
fruits.SingleOrDefault(Function(fruit) fruit.Length > 15)
' Display the result.
Dim output As String =
IIf(String.IsNullOrEmpty(fruit2), "No single item found", fruit2)
Console.WriteLine($"Second array: {output}")
' This code produces the following output:
'
' First array: passionfruit
' Second array: No single item found
Poznámky
Výchozí hodnota odkazových typů a typů s možnou hodnotou null je null
.
Platí pro
SingleOrDefault<TSource>(IEnumerable<TSource>, TSource)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
Vrátí jediný prvek sekvence, nebo zadaná výchozí hodnota, pokud sekvence je prázdná; tato metoda vyvolá výjimku, pokud je v sekvenci více než jeden prvek.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, TSource defaultValue);
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, TSource defaultValue);
static member SingleOrDefault : seq<'Source> * 'Source -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource), defaultValue As TSource) As TSource
Parametry typu
- TSource
Typ prvků objektu source
.
Parametry
- source
- IEnumerable<TSource>
K IEnumerable<T> vrácení jediného prvku .
- defaultValue
- TSource
Výchozí hodnota, která se má vrátit, pokud je posloupnost prázdná.
Návraty
Jeden prvek vstupní sekvence nebo defaultValue
pokud sekvence neobsahuje žádné prvky.
Výjimky
source
je null
.
Vstupní sekvence obsahuje více než jeden prvek.
Platí pro
SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource)
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
- Zdroj:
- Single.cs
Vrátí jediný prvek sekvence, která splňuje zadanou podmínku, nebo zadanou výchozí hodnotu, pokud neexistuje žádný takový prvek; Tato metoda vyvolá výjimku, pokud více než jeden prvek splňuje podmínku.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate, TSource defaultValue);
public static TSource SingleOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate, TSource defaultValue);
static member SingleOrDefault : seq<'Source> * Func<'Source, bool> * 'Source -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean), defaultValue As TSource) As TSource
Parametry typu
- TSource
Typ prvků objektu source
.
Parametry
- source
- IEnumerable<TSource>
Chcete-li IEnumerable<T> vrátit jeden prvek z.
- defaultValue
- TSource
Výchozí hodnota, která se má vrátit, pokud je posloupnost prázdná.
Návraty
Jeden prvek vstupní sekvence, který splňuje podmínku, nebo defaultValue
pokud nebyl nalezen žádný takový prvek.
Výjimky
source
nebo predicate
je null
.
Více než jeden prvek splňuje podmínku v predicate
.