Queryable.Count 方法

定義

傳回序列中的項目數。Returns the number of elements in a sequence.

多載

Count<TSource>(IQueryable<TSource>)

傳回序列中的項目數。Returns the number of elements in a sequence.

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

傳回指定之序列中符合條件的項目數目。Returns the number of elements in the specified sequence that satisfies a condition.

Count<TSource>(IQueryable<TSource>)

傳回序列中的項目數。Returns the number of elements in a sequence.

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

類型參數

TSource

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

參數

source
IQueryable<TSource>

包含要計算之項目的 IQueryable<T>The IQueryable<T> that contains the elements to be counted.

傳回

Int32

輸入序列中的項目數目。The number of elements in the input sequence.

例外狀況

sourcenullsource is null.

source 中的項目數目大於 MaxValueThe number of elements in source is larger than MaxValue.

範例

下列程式碼範例示範如何使用 Count<TSource>(IQueryable<TSource>) 來計算序列中的元素。The following code example demonstrates how to use Count<TSource>(IQueryable<TSource>) to count the elements in a sequence.

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

int numberOfFruits = fruits.AsQueryable().Count();

Console.WriteLine(
    "There are {0} items in the array.",
    numberOfFruits);

// This code produces the following output:
//
// There are 6 items in the array.
Dim fruits() As String = {"apple", "banana", "mango", _
                    "orange", "passionfruit", "grape"}

Dim numberOfFruits As Integer = fruits.AsQueryable().Count()

MsgBox(String.Format( _
    "There are {0} items in the array.", _
    numberOfFruits))

' This code produces the following output:
'
' There are 6 items in the array.

備註

Count<TSource>(IQueryable<TSource>)方法 MethodCallExpression 會產生,代表呼叫 Count<TSource>(IQueryable<TSource>) 本身做為已建立的泛型方法。The Count<TSource>(IQueryable<TSource>) method generates a MethodCallExpression that represents calling Count<TSource>(IQueryable<TSource>) itself as a constructed generic method. 然後,它會將傳遞 MethodCallExpression 給以 Execute<TResult>(Expression) 參數的屬性所表示的方法 IQueryProvider Provider sourceIt then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

執行表示呼叫的運算式樹狀架構所產生的查詢行為, Count<TSource>(IQueryable<TSource>) 取決於參數類型的實作為 sourceThe query behavior that occurs as a result of executing an expression tree that represents calling Count<TSource>(IQueryable<TSource>) depends on the implementation of the type of the source parameter. 預期的行為是它會計算中的專案數 sourceThe expected behavior is that it counts the number of items in source.

適用於

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

傳回指定之序列中符合條件的項目數目。Returns the number of elements in the specified sequence that satisfies a condition.

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

類型參數

TSource

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

參數

source
IQueryable<TSource>

包含要計算之項目的 IQueryable<T>An IQueryable<T> that contains the elements to be counted.

predicate
Expression<Func<TSource,Boolean>>

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

傳回

Int32

序列中符合述詞函式之條件的項目數目。The number of elements in the sequence that satisfies the condition in the predicate function.

例外狀況

sourcepredicatenullsource or predicate is null.

source 中的項目數目大於 MaxValueThe number of elements in source is larger than MaxValue.

範例

下列程式碼範例示範如何使用 Count<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 來計算符合條件之序列中的元素。The following code example demonstrates how to use Count<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) to count the elements in a sequence that satisfy a condition.

class Pet
{
    public string Name { get; set; }
    public bool Vaccinated { get; set; }
}

public static void CountEx2()
{
    // Create an array of Pet objects.
    Pet[] pets = { new Pet { Name="Barley", Vaccinated=true },
                   new Pet { Name="Boots", Vaccinated=false },
                   new Pet { Name="Whiskers", Vaccinated=false } };

    // Count the number of unvaccinated pets in the array.
    int numberUnvaccinated =
        pets.AsQueryable().Count(p => p.Vaccinated == false);

    Console.WriteLine(
        "There are {0} unvaccinated animals.",
        numberUnvaccinated);
}

// This code produces the following output:
//
// There are 2 unvaccinated animals.

Structure Pet
    Public Name As String
    Public Vaccinated As Boolean
End Structure

Shared Sub CountEx2()
    ' Create an array of Pet objects.
    Dim pets() As Pet = {New Pet With {.Name = "Barley", .Vaccinated = True}, _
                   New Pet With {.Name = "Boots", .Vaccinated = False}, _
                   New Pet With {.Name = "Whiskers", .Vaccinated = False}}

    ' Count the number of unvaccinated pets in the array.
    Dim numberUnvaccinated As Integer = pets.AsQueryable().Count(Function(p) p.Vaccinated = False)

    MsgBox(String.Format("There are {0} unvaccinated animals.", numberUnvaccinated))
End Sub

' This code produces the following output:
'
' There are 2 unvaccinated animals.

備註

這個方法至少有一個類型的參數 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>.

Count<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)方法 MethodCallExpression 會產生,代表呼叫 Count<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 本身做為已建立的泛型方法。The Count<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) method generates a MethodCallExpression that represents calling Count<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) itself as a constructed generic method. 然後,它會將傳遞 MethodCallExpression 給以 Execute<TResult>(Expression) 參數的屬性所表示的方法 IQueryProvider Provider sourceIt then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

執行表示呼叫的運算式樹狀架構所產生的查詢行為, Count<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 取決於參數類型的實作為 sourceThe query behavior that occurs as a result of executing an expression tree that represents calling Count<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) depends on the implementation of the type of the source parameter. 預期的行為是它會計算 source 符合所指定之條件的專案數 predicateThe expected behavior is that it counts the number of items in source that satisfy the condition specified by predicate.

適用於