Queryable.Single Method

Definition

Gibt ein einzelnes spezifisches Element einer Sequenz zurückReturns a single, specific element of a sequence.

Overloads

Single<TSource>(IQueryable<TSource>)

Gibt das einzige Element einer Sequenz zurück und löst eine Ausnahme aus, wenn nicht genau ein Element in der Sequenz vorhanden ist.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>>)

Gibt das einzige Element einer Sequenz zurück, das eine angegebene Bedingung erfüllt, und löst eine Ausnahme aus, wenn mehrere solche Elemente vorhanden sind.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>)

Gibt das einzige Element einer Sequenz zurück und löst eine Ausnahme aus, wenn nicht genau ein Element in der Sequenz vorhanden ist.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

Type Parameters

TSource

Der Typ der Elemente von source.The type of the elements of source.

Parameters

source
IQueryable<TSource>

Ein IQueryable<T>, dessen einziges Element zurückgegeben werden sollAn IQueryable<T> to return the single element of.

Returns

TSource

Das einzige Element der Eingabesequenz.The single element of the input sequence.

Exceptions

source ist nullsource is null.

source hat mehr als ein Element.source has more than one element.

Examples

Im folgenden Codebeispiel wird veranschaulicht, wie Single<TSource>(IQueryable<TSource>) verwendet wird, um das einzige Element eines Arrays auszuwählen.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.

Remarks

Die Single<TSource>(IQueryable<TSource>)-Methode generiert eine MethodCallExpression, die den Aufruf von Single<TSource>(IQueryable<TSource>) selbst als konstruierte generische Methode darstellt.The Single<TSource>(IQueryable<TSource>) method generates a MethodCallExpression that represents calling Single<TSource>(IQueryable<TSource>) itself as a constructed generic method. Anschließend übergibt Sie den MethodCallExpression an die Execute<TResult>(Expression)-Methode der IQueryProvider, die durch die Provider-Eigenschaft des source-Parameters dargestellt wird.It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Das Abfrage Verhalten, das auftritt, wenn eine Ausdrucks Baumstruktur ausgeführt wird, die den Aufruf von Single<TSource>(IQueryable<TSource>) darstellt, hängt von der Implementierung des Typs des source-Parameters ab.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. Das erwartete Verhalten ist, dass es das einzige Element in sourcezurückgibt.The expected behavior is that it returns the only element in source.

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

Gibt das einzige Element einer Sequenz zurück, das eine angegebene Bedingung erfüllt, und löst eine Ausnahme aus, wenn mehrere solche Elemente vorhanden sind.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

Type Parameters

TSource

Der Typ der Elemente von source.The type of the elements of source.

Parameters

source
IQueryable<TSource>

Ein IQueryable<T>, aus dem ein einzelnes Element zurückgegeben werden sollAn IQueryable<T> to return a single element from.

predicate
Expression<Func<TSource,Boolean>>

Eine Funktion zum Überprüfen eines Elements auf eine Bedingung.A function to test an element for a condition.

Returns

TSource

Das einzige Element der Eingabesequenz, das die Bedingung in predicate erfüllt.The single element of the input sequence that satisfies the condition in predicate.

Exceptions

source oder predicate ist null.source or predicate is null.

Kein Element erfüllt die Bedingung in predicate.No element satisfies the condition in predicate.

- oder --or- Die Bedingung in predicate wird von mehreren Elementen erfüllt.More than one element satisfies the condition in predicate.

- oder --or- Die Quellsequenz ist leer.The source sequence is empty.

Examples

Im folgenden Codebeispiel wird veranschaulicht, wie Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) verwendet wird, um das einzige Element eines Arrays auszuwählen, das eine Bedingung erfüllt.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.

Remarks

Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate>, dessen Typargument einer der Func<T,TResult> Typen ist.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Für diese Parameter können Sie einen Lambda-Ausdruck übergeben, der in einen Expression<TDelegate>kompiliert wird.For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Die Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)-Methode generiert eine MethodCallExpression, die den Aufruf von Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) selbst als konstruierte generische Methode darstellt.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. Anschließend übergibt Sie den MethodCallExpression an die Execute<TResult>(Expression)-Methode der IQueryProvider, die durch die Provider-Eigenschaft des source-Parameters dargestellt wird.It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Das Abfrage Verhalten, das auftritt, wenn eine Ausdrucks Baumstruktur ausgeführt wird, die den Aufruf von Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) darstellt, hängt von der Implementierung des Typs des source-Parameters ab.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. Das erwartete Verhalten ist, dass es das einzige Element in source zurückgibt, das die durch predicateangegebene Bedingung erfüllt.The expected behavior is that it returns the only element in source that satisfies the condition specified by predicate.

Applies to