Enumerable.SingleOrDefault Enumerable.SingleOrDefault Enumerable.SingleOrDefault Enumerable.SingleOrDefault Method

Definizione

Restituisce un singolo elemento specifico di una sequenza o un valore predefinito se tale elemento non viene trovato.Returns a single, specific element of a sequence, or a default value if that element is not found.

Overload

SingleOrDefault<TSource>(IEnumerable<TSource>) SingleOrDefault<TSource>(IEnumerable<TSource>) SingleOrDefault<TSource>(IEnumerable<TSource>) SingleOrDefault<TSource>(IEnumerable<TSource>)

Restituisce il singolo elemento di una sequenza o un valore predefinito se la sequenza è vuota. Questo metodo genera un'eccezione se esiste più di un elemento nella sequenza.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>) SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Restituisce l'unico elemento di una sequenza che soddisfa una condizione specificata o un valore predefinito se tale elemento esiste. Questo metodo genera un'eccezione se più di un elemento soddisfa la condizione.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>) SingleOrDefault<TSource>(IEnumerable<TSource>) SingleOrDefault<TSource>(IEnumerable<TSource>) SingleOrDefault<TSource>(IEnumerable<TSource>)

Restituisce il singolo elemento di una sequenza o un valore predefinito se la sequenza è vuota. Questo metodo genera un'eccezione se esiste più di un elemento nella sequenza.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);
static member SingleOrDefault : seq<'Source> -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource)) As TSource

Parametri di tipo

TSource

Tipo degli elementi di source.The type of the elements of source.

Parametri

source
IEnumerable<TSource>

Oggetto IEnumerable<T> di cui restituire il singolo elemento.An IEnumerable<T> to return the single element of.

Restituisce

TSource TSource TSource TSource

Il singolo elemento della sequenza di input, o default(TSource) se la sequenza non contiene elementi.The single element of the input sequence, or default(TSource) if the sequence contains no elements.

Eccezioni

La sequenza di input contiene più elementi.The input sequence contains more than one element.

Esempi

Esempio di codice seguente viene illustrato come utilizzare SingleOrDefault<TSource>(IEnumerable<TSource>) per selezionare l'unico elemento di matrice.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.
MsgBox("First array: " & result)

Esempio di codice seguente viene dimostrato che SingleOrDefault<TSource>(IEnumerable<TSource>) restituisce un valore predefinito quando la sequenza non contiene esattamente un elemento.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)
MsgBox("Second array: " & output)

' This code produces the following output:
'
' First array: orange
' Second array: No single item found

In alcuni casi il valore di default(TSource) non è il valore predefinito da usare se la raccolta non contiene elementi.Sometimes the value of default(TSource) is not the default value that you want to use if the collection contains no elements. Invece di controllare il risultato per il valore predefinito non desiderati e quindi modificarlo se necessario, è possibile usare il DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) metodo per specificare il valore predefinito da usare se la raccolta è vuota.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. Chiamare quindi Single<TSource>(IEnumerable<TSource>) per ottenere l'elemento.Then, call Single<TSource>(IEnumerable<TSource>) to obtain the element. Esempio di codice seguente usa entrambe le tecniche per ottenere un valore predefinito pari a 1, se una raccolta di numeri di pagina è vuota.The following code example uses both techniques to obtain a default value of 1 if a collection of page numbers is empty. Perché il valore predefinito per un tipo integer è 0, che non è in genere un numero di pagina valida, il valore predefinito deve essere invece specificato come 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. La prima variabile di risultato viene verificata la il valore predefinito non desiderato dopo che la query è stata eseguita.The first result variable is checked for the unwanted default value after the query has finished executing. La seconda variabile di risultato viene ottenuta tramite DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) per specificare un valore predefinito 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
MsgBox(String.Format("The value of the pageNumber1 variable is {0}", pageNumber1))

' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim pageNumber2 As Integer = pageNumbers.DefaultIfEmpty(1).Single()
MsgBox(String.Format("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

Commenti

Il valore predefinito per riferimento e i tipi nullable è null.The default value for reference and nullable types is null.

Il SingleOrDefault metodo non fornisce un modo per specificare un valore predefinito.The SingleOrDefault method does not provide a way to specify a default value. Se si desidera specificare un valore predefinito diverso da default(TSource), usare il DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) metodo come descritto nella sezione esempio.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>) SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Restituisce l'unico elemento di una sequenza che soddisfa una condizione specificata o un valore predefinito se tale elemento esiste. Questo metodo genera un'eccezione se più di un elemento soddisfa la condizione.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);
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

Parametri di tipo

TSource

Tipo degli elementi di source.The type of the elements of source.

Parametri

source
IEnumerable<TSource>

Un oggetto IEnumerable<T> dal quale restituire un singolo elemento.An IEnumerable<T> to return a single element from.

predicate
Func<TSource,Boolean>

Funzione per testare un elemento per una condizione.A function to test an element for a condition.

Restituisce

TSource TSource TSource TSource

Il singolo elemento della sequenza di input che soddisfa la condizione o default(TSource) se tale elemento non viene trovato.The single element of the input sequence that satisfies the condition, or default(TSource) if no such element is found.

Eccezioni

source o predicate è null.source or predicate is null.

Più di un elemento soddisfa la condizione in predicate.More than one element satisfies the condition in predicate.

Esempi

Esempio di codice seguente viene illustrato come utilizzare SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) per selezionare l'unico elemento di una matrice che soddisfa una condizione.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.
MsgBox("First array: " & fruit1)

Esempio di codice seguente viene dimostrato che SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) restituisce un valore predefinito quando la sequenza non contiene esattamente un elemento che soddisfa la condizione.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)
MsgBox("Second array: " & output)

' This code produces the following output:
'
' First array: passionfruit
' Second array: No single item found

Commenti

Il valore predefinito per riferimento e i tipi nullable è null.The default value for reference and nullable types is null.

Si applica a