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

定義

傳回序列的單一特定項目。Returns a single, specific element of a sequence.

多載

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

傳回序列的唯一一個元素,如果序列中不是正好一個元素,則擲回例外狀況。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>>)

傳回序列中符合指定之條件的唯一一個元素,如果有一個以上這類元素,則擲回例外狀況。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>)

傳回序列的唯一一個元素,如果序列中不是正好一個元素,則擲回例外狀況。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

類型參數

TSource

source 項目的類型。The type of the elements of source.

參數

source
IQueryable<TSource>

要傳回單一項目的 IQueryable<T>An IQueryable<T> to return the single element of.

傳回

TSource TSource TSource TSource

輸入序列的單一項目。The single element of the input sequence.

例外狀況

source 具有多個項目。source has more than one element.

範例

下列程式碼範例示範如何使用Single<TSource>(IQueryable<TSource>)來選取陣列的唯一元素。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.

備註

方法會產生, 其代表以Single<TSource>(IQueryable<TSource>)結構化泛型方法的方式呼叫本身。 MethodCallExpression Single<TSource>(IQueryable<TSource>)The Single<TSource>(IQueryable<TSource>) method generates a MethodCallExpression that represents calling Single<TSource>(IQueryable<TSource>) itself as a constructed generic method. 然後, 它會MethodCallExpression將傳遞Execute<TResult>(Expression)至由Provider source參數IQueryProvider的屬性所表示之的方法。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因執行代表呼叫Single<TSource>(IQueryable<TSource>)之運算式樹狀架構而產生的查詢行為, 取決於source參數類型的實作為。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. 預期的行為是它會在中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>>)

傳回序列中符合指定之條件的唯一一個元素,如果有一個以上這類元素,則擲回例外狀況。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

類型參數

TSource

source 項目的類型。The type of the elements of source.

參數

source
IQueryable<TSource>

要傳回單一項目的來源 IQueryable<T>An IQueryable<T> to return a single element from.

predicate
Expression<Func<TSource,Boolean>>

用來測試項目是否符合條件的函式。A function to test an element for a condition.

傳回

TSource TSource TSource TSource

輸入序列中符合 predicate 之條件的單一項目。The single element of the input sequence that satisfies the condition in predicate.

例外狀況

sourcepredicatenullsource or predicate is null.

沒有任何項目符合 predicate 的條件。No element satisfies the condition in predicate.

-或--or- 超過一個項目符合 predicate 中的條件。More than one element satisfies the condition in predicate.

-或--or- 來源序列為空。The source sequence is empty.

範例

下列程式碼範例示範如何使用Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)來選取符合條件之陣列的唯一元素。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.

備註

這個方法至少有一個類型Expression<TDelegate>的參數, 其類型引數是其中一個Func<T,TResult>類型。This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. 針對這些參數, 您可以傳入 lambda 運算式, 它會編譯成Expression<TDelegate>For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

方法會產生, 其代表以Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)結構化泛型方法的方式呼叫本身。 MethodCallExpression Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)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. 然後, 它會MethodCallExpression將傳遞Execute<TResult>(Expression)至由Provider source參數IQueryProvider的屬性所表示之的方法。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因執行代表呼叫Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)之運算式樹狀架構而產生的查詢行為, 取決於source參數類型的實作為。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. 預期的行為是它會在中source傳回符合所predicate指定條件的唯一元素。The expected behavior is that it returns the only element in source that satisfies the condition specified by predicate.

適用於