Enumerable.SingleOrDefault Metodo

Definizione

Restituisce un singolo elemento specifico di una sequenza o un valore predefinito se tale elemento non viene trovato.

Overload

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.

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.

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

Restituisce l'unico elemento di una sequenza o un valore predefinito specificato se la sequenza è vuota; questo metodo genera un'eccezione se nella sequenza sono presenti più elementi.

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

Restituisce l'unico elemento di una sequenza che soddisfa una condizione specificata o un valore predefinito specificato se tale elemento non esiste; questo metodo genera un'eccezione se più di un elemento soddisfa la condizione.

SingleOrDefault<TSource>(IEnumerable<TSource>)

Source:
Single.cs
Source:
Single.cs
Source:
Single.cs

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.

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

Parametri di tipo

TSource

Tipo degli elementi di source.

Parametri

source
IEnumerable<TSource>

Oggetto IEnumerable<T> di cui restituire il singolo elemento.

Restituisce

TSource

Il singolo elemento della sequenza di input, o default(TSource) se la sequenza non contiene elementi.

Eccezioni

source è null.

La sequenza di input contiene più elementi.

Esempio

Nell'esempio di codice seguente viene illustrato come usare SingleOrDefault<TSource>(IEnumerable<TSource>) per selezionare l'unico elemento di una matrice.

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

Nell'esempio di codice seguente viene illustrato che SingleOrDefault<TSource>(IEnumerable<TSource>) restituisce un valore predefinito quando la sequenza è vuota.

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

A volte il valore di default(TSource) non è il valore predefinito che si desidera utilizzare se la raccolta non contiene elementi. Anziché controllare il risultato per il valore predefinito indesiderato e modificarlo, se necessario, è possibile usare il DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) metodo per specificare il valore predefinito che si desidera utilizzare se la raccolta è vuota. Chiamare Single<TSource>(IEnumerable<TSource>) quindi per ottenere l'elemento . Nell'esempio di codice seguente vengono usate entrambe le tecniche per ottenere un valore predefinito pari a 1 se una raccolta di numeri di pagina è vuota. Poiché il valore predefinito per un numero intero è 0, che in genere non è un numero di pagina valido, il valore predefinito deve essere specificato come 1. La prima variabile di risultato viene controllata per il valore predefinito indesiderato al termine dell'esecuzione della query. La seconda variabile risultato viene ottenuta usando DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) per specificare un valore predefinito pari a 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

Commenti

Il valore predefinito per i tipi reference e nullable è null.

Il SingleOrDefault metodo non fornisce un modo per specificare un valore predefinito. Se si vuole specificare un valore predefinito diverso da default(TSource), usare il DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) metodo come descritto nella sezione Esempio.

Si applica a

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

Source:
Single.cs
Source:
Single.cs
Source:
Single.cs

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.

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

Parametri di tipo

TSource

Tipo degli elementi di source.

Parametri

source
IEnumerable<TSource>

Un oggetto IEnumerable<T> dal quale restituire un singolo elemento.

predicate
Func<TSource,Boolean>

Funzione per testare un elemento per una condizione.

Restituisce

TSource

Il singolo elemento della sequenza di input che soddisfa la condizione o default(TSource) se tale elemento non viene trovato.

Eccezioni

source o predicate è null.

Più di un elemento soddisfa la condizione in predicate.

Esempio

Nell'esempio di codice seguente viene illustrato come usare SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) per selezionare l'unico elemento di una matrice che soddisfa una condizione.

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

Nell'esempio di codice seguente viene illustrato che SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) restituisce un valore predefinito quando la sequenza non contiene elementi che soddisfano la condizione.

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

Commenti

Il valore predefinito per i tipi reference e nullable è null.

Si applica a

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

Source:
Single.cs
Source:
Single.cs
Source:
Single.cs

Restituisce l'unico elemento di una sequenza o un valore predefinito specificato se la sequenza è vuota; questo metodo genera un'eccezione se nella sequenza sono presenti più elementi.

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

Parametri di tipo

TSource

Tipo degli elementi di source.

Parametri

source
IEnumerable<TSource>

Oggetto IEnumerable<T> di cui restituire il singolo elemento.

defaultValue
TSource

Valore predefinito da restituire se la sequenza è vuota.

Restituisce

TSource

Singolo elemento della sequenza di input o defaultValue se la sequenza non contiene elementi.

Eccezioni

source è null.

La sequenza di input contiene più elementi.

Si applica a

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

Source:
Single.cs
Source:
Single.cs
Source:
Single.cs

Restituisce l'unico elemento di una sequenza che soddisfa una condizione specificata o un valore predefinito specificato se tale elemento non esiste; questo metodo genera un'eccezione se più di un elemento soddisfa la condizione.

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

Parametri di tipo

TSource

Tipo degli elementi di source.

Parametri

source
IEnumerable<TSource>

Un oggetto IEnumerable<T> dal quale restituire un singolo elemento.

predicate
Func<TSource,Boolean>

Funzione per testare un elemento per una condizione.

defaultValue
TSource

Valore predefinito da restituire se la sequenza è vuota.

Restituisce

TSource

Singolo elemento della sequenza di input che soddisfa la condizione o defaultValue se non viene trovato alcun elemento di questo tipo.

Eccezioni

source o predicate è null.

Più di un elemento soddisfa la condizione in predicate.

Si applica a