Queryable.Single Queryable.Single Queryable.Single Queryable.Single Method

Definizione

Restituisce un singolo elemento specifico di una sequenza.Returns a single, specific element of a sequence.

Overload

Single<TSource>(IQueryable<TSource>) Single<TSource>(IQueryable<TSource>) Single<TSource>(IQueryable<TSource>) Single<TSource>(IQueryable<TSource>)

Restituisce l'unico elemento di una sequenza e genera un'eccezione se nella sequenza non è presente esattamente un elemento.Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence.

Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

Restituisce l'unico elemento di una sequenza che soddisfa una condizione specificata e genera un'eccezione se esistono più elementi di tale tipo.Returns the only element of a sequence that satisfies a specified condition, and throws an exception if more than one such element exists.

Single<TSource>(IQueryable<TSource>) Single<TSource>(IQueryable<TSource>) Single<TSource>(IQueryable<TSource>) Single<TSource>(IQueryable<TSource>)

Restituisce l'unico elemento di una sequenza e genera un'eccezione se nella sequenza non è presente esattamente un elemento.Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource Single(System::Linq::IQueryable<TSource> ^ source);
public static TSource Single<TSource> (this System.Linq.IQueryable<TSource> source);
static member Single : System.Linq.IQueryable<'Source> -> 'Source
<Extension()>
Public Function Single(Of TSource) (source As IQueryable(Of TSource)) As TSource

Parametri di tipo

TSource

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

Parametri

source
IQueryable<TSource>

Un IQueryable<T> per restituire il singolo elemento.An IQueryable<T> to return the single element of.

Restituisce

TSource TSource TSource TSource

Singolo elemento della sequenza di input.The single element of the input sequence.

Eccezioni

source dispone di più di un elemento.source has more than one element.

Esempi

Esempio di codice seguente viene illustrato come utilizzare Single<TSource>(IQueryable<TSource>) per selezionare l'unico elemento di matrice.The following code example demonstrates how to use Single<TSource>(IQueryable<TSource>) to select the only element of an array.

// Create two arrays.
string[] fruits1 = { "orange" };
string[] fruits2 = { "orange", "apple" };

// Get the only item in the first array.
string fruit1 = fruits1.AsQueryable().Single();

Console.WriteLine("First query: " + fruit1);

try
{
    // Try to get the only item in the second array.
    string fruit2 = fruits2.AsQueryable().Single();
    Console.WriteLine("Second query: " + fruit2);
}
catch (System.InvalidOperationException)
{
    Console.WriteLine(
        "Second query: The collection does not contain exactly one element."
        );
}

/*
    This code produces the following output:

    First query: orange
    Second query: The collection does not contain exactly one element
*/

' Create two arrays.
Dim fruits1() As String = {"orange"}
Dim fruits2() As String = {"orange", "apple"}

' Get the only item in the first array.
Dim result As String = fruits1.AsQueryable().Single()

' Display the result.
MsgBox("First query: " & result)

Try
    ' Try to get the only item in the second array.
    Dim fruit2 As String = fruits2.AsQueryable().Single()
    MsgBox("Second query: " + fruit2)
Catch
    MsgBox("Second query: The collection does not contain exactly one element.")
End Try

' This code produces the following output:

' First query: orange
' Second query: The collection does not contain exactly one element.

Commenti

Il Single<TSource>(IQueryable<TSource>) metodo genera un MethodCallExpression che rappresenta una chiamata Single<TSource>(IQueryable<TSource>) stesso come un metodo generico costruito.The Single<TSource>(IQueryable<TSource>) method generates a MethodCallExpression that represents calling Single<TSource>(IQueryable<TSource>) itself as a constructed generic method. Passa quindi il MethodCallExpression per il Execute<TResult>(Expression) metodo del IQueryProvider rappresentato dal Provider proprietà del source parametro.It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Il comportamento delle query che si verifica in seguito all'esecuzione di un albero delle espressioni che rappresenta una chiamata Single<TSource>(IQueryable<TSource>) dipende dall'implementazione del tipo del source parametro.The query behavior that occurs as a result of executing an expression tree that represents calling Single<TSource>(IQueryable<TSource>) depends on the implementation of the type of the source parameter. Il comportamento previsto è che restituisce l'unico elemento nella source.The expected behavior is that it returns the only element in source.

Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

Restituisce l'unico elemento di una sequenza che soddisfa una condizione specificata e genera un'eccezione se esistono più elementi di tale tipo.Returns the only element of a sequence that satisfies a specified condition, and throws an exception if more than one such element exists.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource Single(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate);
public static TSource Single<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
static member Single : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> -> 'Source
<Extension()>
Public Function Single(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Boolean))) As TSource

Parametri di tipo

TSource

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

Parametri

source
IQueryable<TSource>

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

predicate
Expression<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 in predicate.The single element of the input sequence that satisfies the condition in predicate.

Eccezioni

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

Nessun elemento soddisfa la condizione in predicate.No element satisfies the condition in predicate.

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

-oppure--or- La sequenza di origine è vuota.The source sequence is empty.

Esempi

Esempio di codice seguente viene illustrato come utilizzare Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) per selezionare l'unico elemento di una matrice che soddisfa una condizione.The following code example demonstrates how to use Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) to select the only element of an array that satisfies a condition.

string[] fruits = { "apple", "banana", "mango", 
                      "orange", "passionfruit", "grape" };

// Get the only string in the array whose length is greater than 10.
string fruit1 = fruits.AsQueryable().Single(fruit => fruit.Length > 10);

Console.WriteLine("First Query: " + fruit1);

try
{
    // Try to get the only string in the array
    // whose length is greater than 15.
    string fruit2 = fruits.AsQueryable().Single(fruit => fruit.Length > 15);
    Console.WriteLine("Second Query: " + fruit2);
}
catch (System.InvalidOperationException)
{
    Console.Write("Second Query: The collection does not contain ");
    Console.WriteLine("exactly one element whose length is greater than 15.");
}

/*
    This code produces the following output:

    First Query: passionfruit
    Second Query: The collection does not contain exactly one 
    element whose length is greater than 15.
 */

Dim fruits() As String = _
    {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

' Get the only string in the array whose length is greater than 10.
Dim result As String = _
    fruits.AsQueryable().Single(Function(fruit) fruit.Length > 10)

' Display the result.
MsgBox("First Query: " & result)

Try
    ' Try to get the only string in the array
    ' whose length is greater than 15.
    Dim fruit2 As String = fruits.AsQueryable().Single(Function(fruit) fruit.Length > 15)
    MsgBox("Second Query: " + fruit2)
Catch
    Dim text As String = "Second Query: The collection does not contain "
    text = text & "exactly one element whose length is greater than 15."
    MsgBox(text)
End Try

' This code produces the following output:

' First Query: passionfruit
' Second Query: The collection does not contain exactly one 
'   element whose length is greater than 15.

Commenti

Questo metodo ha almeno un parametro di tipo Expression<TDelegate> il cui argomento tipo è uno del Func<T,TResult> tipi.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Per questi parametri, è possibile passare in un'espressione lambda e verrà compilata per un Expression<TDelegate>.For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Il Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) metodo genera un MethodCallExpression che rappresenta una chiamata Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) stesso come un metodo generico costruito.The Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) method generates a MethodCallExpression that represents calling Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) itself as a constructed generic method. Passa quindi il MethodCallExpression per il Execute<TResult>(Expression) metodo del IQueryProvider rappresentato dal Provider proprietà del source parametro.It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Il comportamento delle query che si verifica in seguito all'esecuzione di un albero delle espressioni che rappresenta una chiamata Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) dipende dall'implementazione del tipo del source parametro.The query behavior that occurs as a result of executing an expression tree that represents calling Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) depends on the implementation of the type of the source parameter. Il comportamento previsto è che restituisce l'unico elemento nella source che soddisfa la condizione specificata dal predicate.The expected behavior is that it returns the only element in source that satisfies the condition specified by predicate.

Si applica a