Enumerable.SingleOrDefault Metoda

Definice

Vrátí jeden konkrétní prvek sekvence nebo výchozí hodnotu, pokud tento prvek nebyl nalezen.Returns a single, specific element of a sequence, or a default value if that element is not found.

Přetížení

SingleOrDefault<TSource>(IEnumerable<TSource>)

Vrátí jediný prvek sekvence nebo výchozí hodnotu, pokud je sekvence prázdná. Tato metoda vyvolá výjimku, pokud je v sekvenci více než jeden prvek.Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence.

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ínky.Returns the only element of a sequence that satisfies a specified condition or a default value if no such element exists; this method throws an exception if more than one element satisfies the condition.

SingleOrDefault<TSource>(IEnumerable<TSource>)

Vrátí jediný prvek sekvence nebo výchozí hodnotu, pokud je sekvence prázdná. Tato metoda vyvolá výjimku, pokud je v sekvenci více než jeden prvek.Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence.

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ů source .The type of the elements of source.

Parametry

source
IEnumerable<TSource>

IEnumerable<T>A vrátí jeden prvek.An IEnumerable<T> to return the single element of.

Návraty

TSource

Jediný prvek vstupní sekvence nebo default ( TSource ), pokud sekvence neobsahuje žádné prvky.The single element of the input sequence, or default(TSource) if the sequence contains no elements.

Výjimky

source je null.source is null.

Vstupní sekvence obsahuje více než jeden prvek.The input sequence contains more than one element.

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.The following code example demonstrates how to use SingleOrDefault<TSource>(IEnumerable<TSource>) to select the only element of an array.

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>) vrátí výchozí hodnotu, když sekvence neobsahuje přesně jeden element.The following code example demonstrates that SingleOrDefault<TSource>(IEnumerable<TSource>) returns a default value when the sequence does not contain exactly one element.

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í 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 Single<TSource>(IEnumerable<TSource>) k získání elementu.Then, call Single<TSource>(IEnumerable<TSource>) to obtain the element. Následující příklad kódu používá obě metody pro získání výchozí hodnoty 1, pokud je kolekce čísel stránek prázdná.The following code example uses both techniques to obtain a default value of 1 if a collection of page numbers is empty. Vzhledem k tomu, že výchozí hodnota pro celé číslo je 0, což není obvykle platné číslo stránky, výchozí hodnota musí být zadána jako 1.Because the default value for an integer is 0, which is not usually a valid page number, 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.

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 pro odkaz na typy s možnou hodnotou null je null .The default value for reference and nullable types is null.

SingleOrDefaultMetoda neposkytuje způsob, jak zadat výchozí hodnotu.The SingleOrDefault 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.

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ínky.Returns the only element of a sequence that satisfies a specified condition or a default value if no such element exists; this method throws an exception if more than one element satisfies the condition.

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ů source .The type of the elements of source.

Parametry

source
IEnumerable<TSource>

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

predicate
Func<TSource,Boolean>

Funkce pro otestování prvku pro podmínku.A function to test an element for a condition.

Návraty

TSource

Jediný prvek vstupní sekvence, která splňuje podmínku, nebo default ( TSource ), pokud žádný takový prvek není nalezen.The single element of the input sequence that satisfies the condition, or default(TSource) if no such element is found.

Výjimky

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

Podmínka v prvku splňuje více než jeden prvek predicate .More than one element satisfies the condition in 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.The following code example demonstrates how to use SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) to select the only element of an array that satisfies a condition.

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>) vrátí výchozí hodnotu, pokud sekvence neobsahuje přesně jeden prvek, který splňuje podmínku.The following code example demonstrates that SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) returns a default value when the sequence does not contain exactly one element that satisfies the condition.

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 pro odkaz na typy s možnou hodnotou null je null .The default value for reference and nullable types is null.

Platí pro