聚合操作

聚合运算从值集合计算单个值。 从一个月的日温度值计算日平均温度就是聚合运算的一个示例。

下图显示了对一个数字序列执行两个不同聚合运算的结果。 第一个运算对这些数字执行求和。 第二个运算返回该序列中的最大值。

LINQ 聚合操作

以下部分列出了执行聚合运算的标准查询运算符方法。

方法

方法名

说明

C# 查询表达式语法

Visual Basic 查询表达式语法

更多信息

Aggregate

对集合值执行自定义聚合运算。

不适用。

不适用。

Enumerable.Aggregate

Queryable.Aggregate

Average

计算值集合的平均值。

不适用。

Aggregate … In … Into Average()

Enumerable.Average

Queryable.Average

计数

对集合中的元素进行计数,还可以仅对满足某一谓词函数的元素进行计数。

不适用。

Aggregate … In … Into Count()

Enumerable.Count

Queryable.Count

LongCount

对大型集合中的元素进行计数,还可以仅对满足某一谓词函数的元素进行计数。

不适用。

Aggregate … In … Into LongCount()

Enumerable.LongCount

Queryable.LongCount

最大值

确定集合中的最大值。

不适用。

Aggregate … In … Into Max()

Enumerable.Max

Queryable.Max

最小值

确定集合中的最小值。

不适用。

Aggregate … In … Into Min()

Enumerable.Min

Queryable.Min

Sum

计算集合中值的总和。

不适用。

Aggregate … In … Into Sum()

Enumerable.Sum

Queryable.Sum

查询表达式语法示例

Average

下面的代码示例使用 Visual Basic 中的 Aggregate Into Average 子句计算表示温度的数字数组中的平均温度。


        Dim temperatures() As Double = {72.0, 81.5, 69.3, 88.6, 80.0, 68.5}

        Dim avg = Aggregate temp In temperatures Into Average()

        ' Display the result.
        MsgBox(avg)

        ' This code produces the following output:

        ' 76.65

计数

下面的代码示例使用 Visual Basic 中的 Aggregate Into Count 子句计算数组中大于或等于 80 的值的个数。


        Dim temperatures() As Double = {72.0, 81.5, 69.3, 88.6, 80.0, 68.5}

        Dim highTemps As Integer = Aggregate temp In temperatures Into Count(temp >= 80)

        ' Display the result.
        MsgBox(highTemps)

        ' This code produces the following output:

        ' 3

LongCount

下面的代码示例使用 Visual Basic 中的 Aggregate Into LongCount 子句计算数组中值的个数。


        Dim temperatures() As Double = {72.0, 81.5, 69.3, 88.6, 80.0, 68.5}

        Dim numTemps As Long = Aggregate temp In temperatures Into LongCount()

        ' Display the result.
        MsgBox(numTemps)

        ' This code produces the following output:

        ' 6

最大值

下面的代码示例使用 Visual Basic 中的 Aggregate Into Max 子句计算表示温度的数字数组中的最高温度。


        Dim temperatures() As Double = {72.0, 81.5, 69.3, 88.6, 80.0, 68.5}

        Dim maxTemp = Aggregate temp In temperatures Into Max()

        ' Display the result.
        MsgBox(maxTemp)

        ' This code produces the following output:

        ' 88.6

最小值

下面的代码示例使用 Visual Basic 中的 Aggregate Into Min 子句计算表示温度的数字数组中的最低温度。


        Dim temperatures() As Double = {72.0, 81.5, 69.3, 88.6, 80.0, 68.5}

        Dim minTemp = Aggregate temp In temperatures Into Min()

        ' Display the result.
        MsgBox(minTemp)

        ' This code produces the following output:

        ' 68.5

Sum

下面的代码示例使用 Visual Basic 中的 Aggregate Into Sum 子句从表示费用的值数组中计算费用总额。


        Dim expenses() As Double = {560.0, 300.0, 1080.5, 29.95, 64.75, 200.0}

        Dim totalExpense = Aggregate expense In expenses Into Sum()

        ' Display the result.
        MsgBox(totalExpense)

        ' This code produces the following output:

        ' 2235.2

请参见

任务

如何:在 CSV 文本文件中计算列值 (LINQ)

如何:使用 LINQ 对数据进行计数、求和与求平均值计算 (Visual Basic)

如何:使用 LINQ 查找查询结果中的最小值或最大值 (Visual Basic)

如何:查询目录树中的一个或多个最大的文件 (LINQ)

如何:查询一组文件夹中的总字节数 (LINQ)

参考

Aggregate 子句 (Visual Basic)

System.Linq

概念

标准查询运算符概述