Queryable.Sum 方法

定义

计算数值序列的和。Computes the sum of a sequence of numeric values.

重载

Sum(IQueryable<Single>)

计算 Single 值序列的总和。Computes the sum of a sequence of Single values.

Sum(IQueryable<Nullable<Single>>)

计算可以为 null 的 Single 值序列的总和。Computes the sum of a sequence of nullable Single values.

Sum(IQueryable<Nullable<Int64>>)

计算可以为 null 的 Int64 值序列的总和。Computes the sum of a sequence of nullable Int64 values.

Sum(IQueryable<Nullable<Int32>>)

计算可以为 null 的 Int32 值序列的总和。Computes the sum of a sequence of nullable Int32 values.

Sum(IQueryable<Nullable<Double>>)

计算可以为 null 的 Double 值序列的总和。Computes the sum of a sequence of nullable Double values.

Sum(IQueryable<Int32>)

计算 Int32 值序列的总和。Computes the sum of a sequence of Int32 values.

Sum(IQueryable<Int64>)

计算 Int64 值序列的总和。Computes the sum of a sequence of Int64 values.

Sum(IQueryable<Nullable<Decimal>>)

计算可以为 null 的 Decimal 值序列的总和。Computes the sum of a sequence of nullable Decimal values.

Sum(IQueryable<Double>)

计算 Double 值序列的总和。Computes the sum of a sequence of Double values.

Sum(IQueryable<Decimal>)

计算 Decimal 值序列的总和。Computes the sum of a sequence of Decimal values.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Single>>>)

计算可以为 null 的 Single 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of nullable Single values that is obtained by invoking a projection function on each element of the input sequence.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int64>>>)

计算可以为 null 的 Int64 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of nullable Int64 values that is obtained by invoking a projection function on each element of the input sequence.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int32>>>)

计算可以为 null 的 Int32 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of nullable Int32 values that is obtained by invoking a projection function on each element of the input sequence.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Double>>>)

计算可以为 null 的 Double 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of nullable Double values that is obtained by invoking a projection function on each element of the input sequence.

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

计算 Single 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of Single values that is obtained by invoking a projection function on each element of the input sequence.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int64>>)

计算 Int64 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of Int64 values that is obtained by invoking a projection function on each element of the input sequence.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32>>)

计算 Int32 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of Int32 values that is obtained by invoking a projection function on each element of the input sequence.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>)

计算 Double 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of Double values that is obtained by invoking a projection function on each element of the input sequence.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Decimal>>)

计算 Decimal 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of Decimal values that is obtained by invoking a projection function on each element of the input sequence.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Decimal>>>)

计算可以为 null 的 Decimal 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of nullable Decimal values that is obtained by invoking a projection function on each element of the input sequence.

Sum(IQueryable<Single>)

计算 Single 值序列的总和。Computes the sum of a sequence of Single values.

public:
[System::Runtime::CompilerServices::Extension]
 static float Sum(System::Linq::IQueryable<float> ^ source);
public static float Sum (this System.Linq.IQueryable<float> source);
static member Sum : System.Linq.IQueryable<single> -> single
<Extension()>
Public Function Sum (source As IQueryable(Of Single)) As Single

参数

source
IQueryable<Single>

要计算其总和的 Single 值序列。A sequence of Single values to calculate the sum of.

返回

序列中的值的总和。The sum of the values in the sequence.

例外

sourcenullsource is null.

示例

下面的代码示例演示如何使用 Sum(IQueryable<Single>) 对序列的值求和。The following code example demonstrates how to use Sum(IQueryable<Single>) to sum the values of a sequence.

List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

float sum = numbers.AsQueryable().Sum();

Console.WriteLine("The sum of the numbers is {0}.", sum);

/*
    This code produces the following output:

    The sum of the numbers is 635.13.
*/

Dim numbers As New List(Of Single)(New Single() {43.68F, 1.25F, 583.7F, 6.5F})

Dim sum As Single = numbers.AsQueryable().Sum()

MsgBox("The sum of the numbers is " & sum)

' This code produces the following output:

' The sum of the numbers is 635.13.

注解

Sum(IQueryable<Single>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum(IQueryable<Single>) 本身。The Sum(IQueryable<Single>) method generates a MethodCallExpression that represents calling Sum(IQueryable<Single>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum(IQueryable<Single>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum(IQueryable<Single>) depends on the implementation of the type of the source parameter. 预期的行为是返回 source中的值之和。The expected behavior is that it returns the sum of the values in source.

Sum(IQueryable<Nullable<Single>>)

计算可以为 null 的 Single 值序列的总和。Computes the sum of a sequence of nullable Single values.

public:
[System::Runtime::CompilerServices::Extension]
 static Nullable<float> Sum(System::Linq::IQueryable<Nullable<float>> ^ source);
public static Nullable<float> Sum (this System.Linq.IQueryable<Nullable<float>> source);
static member Sum : System.Linq.IQueryable<Nullable<single>> -> Nullable<single>
<Extension()>
Public Function Sum (source As IQueryable(Of Nullable(Of Single))) As Nullable(Of Single)

参数

source
IQueryable<Nullable<Single>>

要计算其总和的可以为 null 的 Single 值序列。A sequence of nullable Single values to calculate the sum of.

返回

序列中的值的总和。The sum of the values in the sequence.

例外

sourcenullsource is null.

示例

下面的代码示例演示如何使用 Sum(IQueryable<Nullable<Single>>) 对序列的值求和。The following code example demonstrates how to use Sum(IQueryable<Nullable<Single>>) to sum the values of a sequence.

float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

float? sum = points.AsQueryable().Sum();

Console.WriteLine("Total points earned: {0}", sum);

/*
    This code produces the following output:

    Total points earned: 311.39
*/

Dim points As Nullable(Of Single)() = {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

Dim sum As Nullable(Of Single) = points.AsQueryable().Sum()

MsgBox("Total points earned: " & sum)

'This code produces the following output:

'Total points earned: 311.39

注解

Sum(IQueryable<Nullable<Single>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum(IQueryable<Nullable<Single>>) 本身。The Sum(IQueryable<Nullable<Single>>) method generates a MethodCallExpression that represents calling Sum(IQueryable<Nullable<Single>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum(IQueryable<Nullable<Single>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum(IQueryable<Nullable<Single>>) depends on the implementation of the type of the source parameter. 预期的行为是返回 source中的值之和。The expected behavior is that it returns the sum of the values in source.

Sum(IQueryable<Nullable<Int64>>)

计算可以为 null 的 Int64 值序列的总和。Computes the sum of a sequence of nullable Int64 values.

public:
[System::Runtime::CompilerServices::Extension]
 static Nullable<long> Sum(System::Linq::IQueryable<Nullable<long>> ^ source);
public static Nullable<long> Sum (this System.Linq.IQueryable<Nullable<long>> source);
static member Sum : System.Linq.IQueryable<Nullable<int64>> -> Nullable<int64>
<Extension()>
Public Function Sum (source As IQueryable(Of Nullable(Of Long))) As Nullable(Of Long)

参数

source
IQueryable<Nullable<Int64>>

要计算其总和的可以为 null 的 Int64 值序列。A sequence of nullable Int64 values to calculate the sum of.

返回

序列中的值的总和。The sum of the values in the sequence.

例外

sourcenullsource is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum(IQueryable<Nullable<Single>>) 对序列的值求和。The following code example demonstrates how to use Sum(IQueryable<Nullable<Single>>) to sum the values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到此主题,请将源序列的元素替换为相应数字类型的元素。To extend the example to this topic, substitute the elements of the source sequence with elements of the appropriate numerical type.

float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

float? sum = points.AsQueryable().Sum();

Console.WriteLine("Total points earned: {0}", sum);

/*
    This code produces the following output:

    Total points earned: 311.39
*/

Dim points As Nullable(Of Single)() = {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

Dim sum As Nullable(Of Single) = points.AsQueryable().Sum()

MsgBox("Total points earned: " & sum)

'This code produces the following output:

'Total points earned: 311.39

注解

Sum(IQueryable<Nullable<Int64>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum(IQueryable<Nullable<Int64>>) 本身。The Sum(IQueryable<Nullable<Int64>>) method generates a MethodCallExpression that represents calling Sum(IQueryable<Nullable<Int64>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum(IQueryable<Nullable<Int64>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum(IQueryable<Nullable<Int64>>) depends on the implementation of the type of the source parameter. 预期的行为是返回 source中的值之和。The expected behavior is that it returns the sum of the values in source.

Sum(IQueryable<Nullable<Int32>>)

计算可以为 null 的 Int32 值序列的总和。Computes the sum of a sequence of nullable Int32 values.

public:
[System::Runtime::CompilerServices::Extension]
 static Nullable<int> Sum(System::Linq::IQueryable<Nullable<int>> ^ source);
public static Nullable<int> Sum (this System.Linq.IQueryable<Nullable<int>> source);
static member Sum : System.Linq.IQueryable<Nullable<int>> -> Nullable<int>
<Extension()>
Public Function Sum (source As IQueryable(Of Nullable(Of Integer))) As Nullable(Of Integer)

参数

source
IQueryable<Nullable<Int32>>

要计算其总和的可以为 null 的 Int32 值序列。A sequence of nullable Int32 values to calculate the sum of.

返回

序列中的值的总和。The sum of the values in the sequence.

例外

sourcenullsource is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum(IQueryable<Nullable<Single>>) 对序列的值求和。The following code example demonstrates how to use Sum(IQueryable<Nullable<Single>>) to sum the values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到此主题,请将源序列的元素替换为相应数字类型的元素。To extend the example to this topic, substitute the elements of the source sequence with elements of the appropriate numerical type.

float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

float? sum = points.AsQueryable().Sum();

Console.WriteLine("Total points earned: {0}", sum);

/*
    This code produces the following output:

    Total points earned: 311.39
*/

Dim points As Nullable(Of Single)() = {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

Dim sum As Nullable(Of Single) = points.AsQueryable().Sum()

MsgBox("Total points earned: " & sum)

'This code produces the following output:

'Total points earned: 311.39

注解

Sum(IQueryable<Nullable<Int32>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum(IQueryable<Nullable<Int32>>) 本身。The Sum(IQueryable<Nullable<Int32>>) method generates a MethodCallExpression that represents calling Sum(IQueryable<Nullable<Int32>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum(IQueryable<Nullable<Int32>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum(IQueryable<Nullable<Int32>>) depends on the implementation of the type of the source parameter. 预期的行为是返回 source中的值之和。The expected behavior is that it returns the sum of the values in source.

Sum(IQueryable<Nullable<Double>>)

计算可以为 null 的 Double 值序列的总和。Computes the sum of a sequence of nullable Double values.

public:
[System::Runtime::CompilerServices::Extension]
 static Nullable<double> Sum(System::Linq::IQueryable<Nullable<double>> ^ source);
public static Nullable<double> Sum (this System.Linq.IQueryable<Nullable<double>> source);
static member Sum : System.Linq.IQueryable<Nullable<double>> -> Nullable<double>
<Extension()>
Public Function Sum (source As IQueryable(Of Nullable(Of Double))) As Nullable(Of Double)

参数

source
IQueryable<Nullable<Double>>

要计算其总和的可以为 null 的 Double 值序列。A sequence of nullable Double values to calculate the sum of.

返回

序列中的值的总和。The sum of the values in the sequence.

例外

sourcenullsource is null.

示例

下面的代码示例演示如何使用 Sum(IQueryable<Nullable<Single>>) 对序列的值求和。The following code example demonstrates how to use Sum(IQueryable<Nullable<Single>>) to sum the values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到此主题,请将源序列的元素替换为相应数字类型的元素。To extend the example to this topic, substitute the elements of the source sequence with elements of the appropriate numerical type.

float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

float? sum = points.AsQueryable().Sum();

Console.WriteLine("Total points earned: {0}", sum);

/*
    This code produces the following output:

    Total points earned: 311.39
*/

Dim points As Nullable(Of Single)() = {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

Dim sum As Nullable(Of Single) = points.AsQueryable().Sum()

MsgBox("Total points earned: " & sum)

'This code produces the following output:

'Total points earned: 311.39

注解

Sum(IQueryable<Nullable<Double>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum(IQueryable<Nullable<Double>>) 本身。The Sum(IQueryable<Nullable<Double>>) method generates a MethodCallExpression that represents calling Sum(IQueryable<Nullable<Double>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum(IQueryable<Nullable<Double>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum(IQueryable<Nullable<Double>>) depends on the implementation of the type of the source parameter. 预期的行为是返回 source中的值之和。The expected behavior is that it returns the sum of the values in source.

Sum(IQueryable<Int32>)

计算 Int32 值序列的总和。Computes the sum of a sequence of Int32 values.

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

参数

source
IQueryable<Int32>

要计算其总和的 Int32 值序列。A sequence of Int32 values to calculate the sum of.

返回

序列中的值的总和。The sum of the values in the sequence.

例外

sourcenullsource is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum(IQueryable<Single>) 对序列的值求和。The following code example demonstrates how to use Sum(IQueryable<Single>) to sum the values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到此主题,请将源序列的元素替换为相应数字类型的元素。To extend the example to this topic, substitute the elements of the source sequence with elements of the appropriate numerical type.

List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

float sum = numbers.AsQueryable().Sum();

Console.WriteLine("The sum of the numbers is {0}.", sum);

/*
    This code produces the following output:

    The sum of the numbers is 635.13.
*/

Dim numbers As New List(Of Single)(New Single() {43.68F, 1.25F, 583.7F, 6.5F})

Dim sum As Single = numbers.AsQueryable().Sum()

MsgBox("The sum of the numbers is " & sum)

' This code produces the following output:

' The sum of the numbers is 635.13.

注解

Sum(IQueryable<Int32>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum(IQueryable<Int32>) 本身。The Sum(IQueryable<Int32>) method generates a MethodCallExpression that represents calling Sum(IQueryable<Int32>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum(IQueryable<Int32>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum(IQueryable<Int32>) depends on the implementation of the type of the source parameter. 预期的行为是返回 source中的值之和。The expected behavior is that it returns the sum of the values in source.

Sum(IQueryable<Int64>)

计算 Int64 值序列的总和。Computes the sum of a sequence of Int64 values.

public:
[System::Runtime::CompilerServices::Extension]
 static long Sum(System::Linq::IQueryable<long> ^ source);
public static long Sum (this System.Linq.IQueryable<long> source);
static member Sum : System.Linq.IQueryable<int64> -> int64
<Extension()>
Public Function Sum (source As IQueryable(Of Long)) As Long

参数

source
IQueryable<Int64>

要计算其总和的 Int64 值序列。A sequence of Int64 values to calculate the sum of.

返回

序列中的值的总和。The sum of the values in the sequence.

例外

sourcenullsource is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum(IQueryable<Single>) 对序列的值求和。The following code example demonstrates how to use Sum(IQueryable<Single>) to sum the values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到此主题,请将源序列的元素替换为相应数字类型的元素。To extend the example to this topic, substitute the elements of the source sequence with elements of the appropriate numerical type.

List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

float sum = numbers.AsQueryable().Sum();

Console.WriteLine("The sum of the numbers is {0}.", sum);

/*
    This code produces the following output:

    The sum of the numbers is 635.13.
*/

Dim numbers As New List(Of Single)(New Single() {43.68F, 1.25F, 583.7F, 6.5F})

Dim sum As Single = numbers.AsQueryable().Sum()

MsgBox("The sum of the numbers is " & sum)

' This code produces the following output:

' The sum of the numbers is 635.13.

注解

Sum(IQueryable<Int64>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum(IQueryable<Int64>) 本身。The Sum(IQueryable<Int64>) method generates a MethodCallExpression that represents calling Sum(IQueryable<Int64>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum(IQueryable<Int64>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum(IQueryable<Int64>) depends on the implementation of the type of the source parameter. 预期的行为是返回 source中的值之和。The expected behavior is that it returns the sum of the values in source.

Sum(IQueryable<Nullable<Decimal>>)

计算可以为 null 的 Decimal 值序列的总和。Computes the sum of a sequence of nullable Decimal values.

public:
[System::Runtime::CompilerServices::Extension]
 static Nullable<System::Decimal> Sum(System::Linq::IQueryable<Nullable<System::Decimal>> ^ source);
public static Nullable<decimal> Sum (this System.Linq.IQueryable<Nullable<decimal>> source);
static member Sum : System.Linq.IQueryable<Nullable<decimal>> -> Nullable<decimal>
<Extension()>
Public Function Sum (source As IQueryable(Of Nullable(Of Decimal))) As Nullable(Of Decimal)

参数

source
IQueryable<Nullable<Decimal>>

要计算其总和的可以为 null 的 Decimal 值序列。A sequence of nullable Decimal values to calculate the sum of.

返回

序列中的值的总和。The sum of the values in the sequence.

例外

sourcenullsource is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum(IQueryable<Nullable<Single>>) 对序列的值求和。The following code example demonstrates how to use Sum(IQueryable<Nullable<Single>>) to sum the values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到此主题,请将源序列的元素替换为相应数字类型的元素。To extend the example to this topic, substitute the elements of the source sequence with elements of the appropriate numerical type.

float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

float? sum = points.AsQueryable().Sum();

Console.WriteLine("Total points earned: {0}", sum);

/*
    This code produces the following output:

    Total points earned: 311.39
*/

Dim points As Nullable(Of Single)() = {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

Dim sum As Nullable(Of Single) = points.AsQueryable().Sum()

MsgBox("Total points earned: " & sum)

'This code produces the following output:

'Total points earned: 311.39

注解

Sum(IQueryable<Nullable<Decimal>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum(IQueryable<Nullable<Decimal>>) 本身。The Sum(IQueryable<Nullable<Decimal>>) method generates a MethodCallExpression that represents calling Sum(IQueryable<Nullable<Decimal>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum(IQueryable<Nullable<Decimal>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum(IQueryable<Nullable<Decimal>>) depends on the implementation of the type of the source parameter. 预期的行为是返回 source中的值之和。The expected behavior is that it returns the sum of the values in source.

Sum(IQueryable<Double>)

计算 Double 值序列的总和。Computes the sum of a sequence of Double values.

public:
[System::Runtime::CompilerServices::Extension]
 static double Sum(System::Linq::IQueryable<double> ^ source);
public static double Sum (this System.Linq.IQueryable<double> source);
static member Sum : System.Linq.IQueryable<double> -> double
<Extension()>
Public Function Sum (source As IQueryable(Of Double)) As Double

参数

source
IQueryable<Double>

要计算其总和的 Double 值序列。A sequence of Double values to calculate the sum of.

返回

序列中的值的总和。The sum of the values in the sequence.

例外

sourcenullsource is null.

示例

下面的代码示例演示如何使用 Sum(IQueryable<Single>) 对序列的值求和。The following code example demonstrates how to use Sum(IQueryable<Single>) to sum the values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到此主题,请将源序列的元素替换为相应数字类型的元素。To extend the example to this topic, substitute the elements of the source sequence with elements of the appropriate numerical type.

List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

float sum = numbers.AsQueryable().Sum();

Console.WriteLine("The sum of the numbers is {0}.", sum);

/*
    This code produces the following output:

    The sum of the numbers is 635.13.
*/

Dim numbers As New List(Of Single)(New Single() {43.68F, 1.25F, 583.7F, 6.5F})

Dim sum As Single = numbers.AsQueryable().Sum()

MsgBox("The sum of the numbers is " & sum)

' This code produces the following output:

' The sum of the numbers is 635.13.

注解

Sum(IQueryable<Double>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum(IQueryable<Double>) 本身。The Sum(IQueryable<Double>) method generates a MethodCallExpression that represents calling Sum(IQueryable<Double>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum(IQueryable<Double>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum(IQueryable<Double>) depends on the implementation of the type of the source parameter. 预期的行为是返回 source中的值之和。The expected behavior is that it returns the sum of the values in source.

Sum(IQueryable<Decimal>)

计算 Decimal 值序列的总和。Computes the sum of a sequence of Decimal values.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Decimal Sum(System::Linq::IQueryable<System::Decimal> ^ source);
public static decimal Sum (this System.Linq.IQueryable<decimal> source);
static member Sum : System.Linq.IQueryable<decimal> -> decimal
<Extension()>
Public Function Sum (source As IQueryable(Of Decimal)) As Decimal

参数

source
IQueryable<Decimal>

要计算其总和的 Decimal 值序列。A sequence of Decimal values to calculate the sum of.

返回

序列中的值的总和。The sum of the values in the sequence.

例外

sourcenullsource is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum(IQueryable<Single>) 对序列的值求和。The following code example demonstrates how to use Sum(IQueryable<Single>) to sum the values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到此主题,请将源序列的元素替换为相应数字类型的元素。To extend the example to this topic, substitute the elements of the source sequence with elements of the appropriate numerical type.

List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

float sum = numbers.AsQueryable().Sum();

Console.WriteLine("The sum of the numbers is {0}.", sum);

/*
    This code produces the following output:

    The sum of the numbers is 635.13.
*/

Dim numbers As New List(Of Single)(New Single() {43.68F, 1.25F, 583.7F, 6.5F})

Dim sum As Single = numbers.AsQueryable().Sum()

MsgBox("The sum of the numbers is " & sum)

' This code produces the following output:

' The sum of the numbers is 635.13.

注解

Sum(IQueryable<Decimal>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum(IQueryable<Decimal>) 本身。The Sum(IQueryable<Decimal>) method generates a MethodCallExpression that represents calling Sum(IQueryable<Decimal>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum(IQueryable<Decimal>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum(IQueryable<Decimal>) depends on the implementation of the type of the source parameter. 预期的行为是返回 source中的值之和。The expected behavior is that it returns the sum of the values in source.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Single>>>)

计算可以为 null 的 Single 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of nullable Single values that is obtained by invoking a projection function on each element of the input sequence.

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

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IQueryable<TSource>

一个 TSource 类型的值序列。A sequence of values of type TSource.

selector
Expression<Func<TSource,Nullable<Single>>>

要应用于每个元素的投影函数。A projection function to apply to each element.

返回

投影值的总和。The sum of the projected values.

例外

sourceselectornullsource or selector is null.

示例

下面的代码示例演示如何使用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 对序列的投影值求和。The following code example demonstrates how to use Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) to sum the projected values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到本主题,请更改 selector 函数体。To extend the example to this topic, change the body of the selector function.

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
}

public static void SumEx3()
{
    List<Package> packages =
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 },
              new Package { Company = "Lucerne Publishing", Weight = 18.7 },
              new Package { Company = "Wingtip Toys", Weight = 6.0 },
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    // Calculate the sum of all package weights.
    double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
}

/*
    This code produces the following output:

    The total weight of the packages is: 83.7
*/

Structure Package
    Public Company As String
    Public Weight As Double
End Structure

Shared Sub SumEx3()
    Dim packages As New List(Of Package)(New Package() { _
            New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

    ' Calculate the sum of all package weights.
    Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

    MsgBox("The total weight of the packages is: " & totalWeight)
End Sub

'This code produces the following output:

'The total weight of the packages is: 83.7

注解

此方法至少具有一个类型 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>.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Single>>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Single>>>) 本身。The Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Single>>>) method generates a MethodCallExpression that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Single>>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Single>>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Single>>>) depends on the implementation of the type of the source parameter. 预期的行为是,它对 source 的每个元素调用 selector,并返回结果值的总和。The expected behavior is that it invokes selector on each element of source and returns the sum of the resulting values.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int64>>>)

计算可以为 null 的 Int64 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of nullable Int64 values that is obtained by invoking a projection function on each element of the input sequence.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static Nullable<long> Sum(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, Nullable<long>> ^> ^ selector);
public static Nullable<long> Sum<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,Nullable<long>>> selector);
static member Sum : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, Nullable<int64>>> -> Nullable<int64>
<Extension()>
Public Function Sum(Of TSource) (source As IQueryable(Of TSource), selector As Expression(Of Func(Of TSource, Nullable(Of Long)))) As Nullable(Of Long)

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IQueryable<TSource>

一个 TSource 类型的值序列。A sequence of values of type TSource.

selector
Expression<Func<TSource,Nullable<Int64>>>

要应用于每个元素的投影函数。A projection function to apply to each element.

返回

投影值的总和。The sum of the projected values.

例外

sourceselectornullsource or selector is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 对序列的投影值求和。The following code example demonstrates how to use Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) to sum the projected values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到本主题,请更改 selector 函数体。To extend the example to this topic, change the body of the selector function.

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
}

public static void SumEx3()
{
    List<Package> packages =
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 },
              new Package { Company = "Lucerne Publishing", Weight = 18.7 },
              new Package { Company = "Wingtip Toys", Weight = 6.0 },
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    // Calculate the sum of all package weights.
    double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
}

/*
    This code produces the following output:

    The total weight of the packages is: 83.7
*/

Structure Package
    Public Company As String
    Public Weight As Double
End Structure

Shared Sub SumEx3()
    Dim packages As New List(Of Package)(New Package() { _
            New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

    ' Calculate the sum of all package weights.
    Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

    MsgBox("The total weight of the packages is: " & totalWeight)
End Sub

'This code produces the following output:

'The total weight of the packages is: 83.7

注解

此方法至少具有一个类型 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>.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int64>>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int64>>>) 本身。The Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int64>>>) method generates a MethodCallExpression that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int64>>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int64>>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int64>>>) depends on the implementation of the type of the source parameter. 预期的行为是,它对 source 的每个元素调用 selector,并返回结果值的总和。The expected behavior is that it invokes selector on each element of source and returns the sum of the resulting values.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int32>>>)

计算可以为 null 的 Int32 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of nullable Int32 values that is obtained by invoking a projection function on each element of the input sequence.

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

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IQueryable<TSource>

一个 TSource 类型的值序列。A sequence of values of type TSource.

selector
Expression<Func<TSource,Nullable<Int32>>>

要应用于每个元素的投影函数。A projection function to apply to each element.

返回

投影值的总和。The sum of the projected values.

例外

sourceselectornullsource or selector is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 对序列的投影值求和。The following code example demonstrates how to use Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) to sum the projected values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到本主题,请更改 selector 函数体。To extend the example to this topic, change the body of the selector function.

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
}

public static void SumEx3()
{
    List<Package> packages =
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 },
              new Package { Company = "Lucerne Publishing", Weight = 18.7 },
              new Package { Company = "Wingtip Toys", Weight = 6.0 },
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    // Calculate the sum of all package weights.
    double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
}

/*
    This code produces the following output:

    The total weight of the packages is: 83.7
*/

Structure Package
    Public Company As String
    Public Weight As Double
End Structure

Shared Sub SumEx3()
    Dim packages As New List(Of Package)(New Package() { _
            New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

    ' Calculate the sum of all package weights.
    Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

    MsgBox("The total weight of the packages is: " & totalWeight)
End Sub

'This code produces the following output:

'The total weight of the packages is: 83.7

注解

此方法至少具有一个类型 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>.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int32>>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int32>>>) 本身。The Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int32>>>) method generates a MethodCallExpression that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int32>>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int32>>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int32>>>) depends on the implementation of the type of the source parameter. 预期的行为是,它对 source 的每个元素调用 selector,并返回结果值的总和。The expected behavior is that it invokes selector on each element of source and returns the sum of the resulting values.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Double>>>)

计算可以为 null 的 Double 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of nullable Double values that is obtained by invoking a projection function on each element of the input sequence.

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

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IQueryable<TSource>

一个 TSource 类型的值序列。A sequence of values of type TSource.

selector
Expression<Func<TSource,Nullable<Double>>>

要应用于每个元素的投影函数。A projection function to apply to each element.

返回

投影值的总和。The sum of the projected values.

例外

sourceselectornullsource or selector is null.

示例

下面的代码示例演示如何使用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 对序列的投影值求和。The following code example demonstrates how to use Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) to sum the projected values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到本主题,请更改 selector 函数体。To extend the example to this topic, change the body of the selector function.

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
}

public static void SumEx3()
{
    List<Package> packages =
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 },
              new Package { Company = "Lucerne Publishing", Weight = 18.7 },
              new Package { Company = "Wingtip Toys", Weight = 6.0 },
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    // Calculate the sum of all package weights.
    double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
}

/*
    This code produces the following output:

    The total weight of the packages is: 83.7
*/

Structure Package
    Public Company As String
    Public Weight As Double
End Structure

Shared Sub SumEx3()
    Dim packages As New List(Of Package)(New Package() { _
            New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

    ' Calculate the sum of all package weights.
    Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

    MsgBox("The total weight of the packages is: " & totalWeight)
End Sub

'This code produces the following output:

'The total weight of the packages is: 83.7

注解

此方法至少具有一个类型 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>.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Double>>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Double>>>) 本身。The Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Double>>>) method generates a MethodCallExpression that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Double>>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Double>>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Double>>>) depends on the implementation of the type of the source parameter. 预期的行为是,它对 source 的每个元素调用 selector,并返回结果值的总和。The expected behavior is that it invokes selector on each element of source and returns the sum of the resulting values.

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

计算 Single 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of Single values that is obtained by invoking a projection function on each element of the input sequence.

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

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IQueryable<TSource>

一个 TSource 类型的值序列。A sequence of values of type TSource.

selector
Expression<Func<TSource,Single>>

要应用于每个元素的投影函数。A projection function to apply to each element.

返回

投影值的总和。The sum of the projected values.

例外

sourceselectornullsource or selector is null.

示例

下面的代码示例演示如何使用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 对序列的投影值求和。The following code example demonstrates how to use Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) to sum the projected values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到本主题,请更改 selector 函数体。To extend the example to this topic, change the body of the selector function.

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
}

public static void SumEx3()
{
    List<Package> packages =
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 },
              new Package { Company = "Lucerne Publishing", Weight = 18.7 },
              new Package { Company = "Wingtip Toys", Weight = 6.0 },
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    // Calculate the sum of all package weights.
    double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
}

/*
    This code produces the following output:

    The total weight of the packages is: 83.7
*/

Structure Package
    Public Company As String
    Public Weight As Double
End Structure

Shared Sub SumEx3()
    Dim packages As New List(Of Package)(New Package() { _
            New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

    ' Calculate the sum of all package weights.
    Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

    MsgBox("The total weight of the packages is: " & totalWeight)
End Sub

'This code produces the following output:

'The total weight of the packages is: 83.7

注解

此方法至少具有一个类型 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>.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Single>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Single>>) 本身。The Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Single>>) method generates a MethodCallExpression that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Single>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Single>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Single>>) depends on the implementation of the type of the source parameter. 预期的行为是,它对 source 的每个元素调用 selector,并返回结果值的总和。The expected behavior is that it invokes selector on each element of source and returns the sum of the resulting values.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int64>>)

计算 Int64 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of Int64 values that is obtained by invoking a projection function on each element of the input sequence.

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

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IQueryable<TSource>

一个 TSource 类型的值序列。A sequence of values of type TSource.

selector
Expression<Func<TSource,Int64>>

要应用于每个元素的投影函数。A projection function to apply to each element.

返回

投影值的总和。The sum of the projected values.

例外

sourceselectornullsource or selector is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 对序列的投影值求和。The following code example demonstrates how to use Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) to sum the projected values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到本主题,请更改 selector 函数体。To extend the example to this topic, change the body of the selector function.

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
}

public static void SumEx3()
{
    List<Package> packages =
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 },
              new Package { Company = "Lucerne Publishing", Weight = 18.7 },
              new Package { Company = "Wingtip Toys", Weight = 6.0 },
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    // Calculate the sum of all package weights.
    double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
}

/*
    This code produces the following output:

    The total weight of the packages is: 83.7
*/

Structure Package
    Public Company As String
    Public Weight As Double
End Structure

Shared Sub SumEx3()
    Dim packages As New List(Of Package)(New Package() { _
            New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

    ' Calculate the sum of all package weights.
    Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

    MsgBox("The total weight of the packages is: " & totalWeight)
End Sub

'This code produces the following output:

'The total weight of the packages is: 83.7

注解

此方法至少具有一个类型 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>.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int64>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int64>>) 本身。The Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int64>>) method generates a MethodCallExpression that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int64>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int64>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int64>>) depends on the implementation of the type of the source parameter. 预期的行为是,它对 source 的每个元素调用 selector,并返回结果值的总和。The expected behavior is that it invokes selector on each element of source and returns the sum of the resulting values.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32>>)

计算 Int32 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of Int32 values that is obtained by invoking a projection function on each element of the input sequence.

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

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IQueryable<TSource>

一个 TSource 类型的值序列。A sequence of values of type TSource.

selector
Expression<Func<TSource,Int32>>

要应用于每个元素的投影函数。A projection function to apply to each element.

返回

投影值的总和。The sum of the projected values.

例外

sourceselectornullsource or selector is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 对序列的投影值求和。The following code example demonstrates how to use Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) to sum the projected values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到本主题,请更改 selector 函数体。To extend the example to this topic, change the body of the selector function.

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
}

public static void SumEx3()
{
    List<Package> packages =
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 },
              new Package { Company = "Lucerne Publishing", Weight = 18.7 },
              new Package { Company = "Wingtip Toys", Weight = 6.0 },
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    // Calculate the sum of all package weights.
    double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
}

/*
    This code produces the following output:

    The total weight of the packages is: 83.7
*/

Structure Package
    Public Company As String
    Public Weight As Double
End Structure

Shared Sub SumEx3()
    Dim packages As New List(Of Package)(New Package() { _
            New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

    ' Calculate the sum of all package weights.
    Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

    MsgBox("The total weight of the packages is: " & totalWeight)
End Sub

'This code produces the following output:

'The total weight of the packages is: 83.7

注解

此方法至少具有一个类型 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>.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32>>) 本身。The Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32>>) method generates a MethodCallExpression that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32>>) depends on the implementation of the type of the source parameter. 预期的行为是,它对 source 的每个元素调用 selector,并返回结果值的总和。The expected behavior is that it invokes selector on each element of source and returns the sum of the resulting values.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>)

计算 Double 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of Double values that is obtained by invoking a projection function on each element of the input sequence.

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

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IQueryable<TSource>

一个 TSource 类型的值序列。A sequence of values of type TSource.

selector
Expression<Func<TSource,Double>>

要应用于每个元素的投影函数。A projection function to apply to each element.

返回

投影值的总和。The sum of the projected values.

例外

sourceselectornullsource or selector is null.

示例

下面的代码示例演示如何使用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 对序列的投影值求和。The following code example demonstrates how to use Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) to sum the projected values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到本主题,请更改 selector 函数体。To extend the example to this topic, change the body of the selector function.

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
}

public static void SumEx3()
{
    List<Package> packages =
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 },
              new Package { Company = "Lucerne Publishing", Weight = 18.7 },
              new Package { Company = "Wingtip Toys", Weight = 6.0 },
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    // Calculate the sum of all package weights.
    double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
}

/*
    This code produces the following output:

    The total weight of the packages is: 83.7
*/

Structure Package
    Public Company As String
    Public Weight As Double
End Structure

Shared Sub SumEx3()
    Dim packages As New List(Of Package)(New Package() { _
            New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

    ' Calculate the sum of all package weights.
    Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

    MsgBox("The total weight of the packages is: " & totalWeight)
End Sub

'This code produces the following output:

'The total weight of the packages is: 83.7

注解

此方法至少具有一个类型 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>.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 本身。The Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) method generates a MethodCallExpression that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 的表达式树而发生的查询行为取决于他 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) depends on the implementation of the type of he source parameter. 预期的行为是,它对 source 的每个元素调用 selector,并返回结果值的总和。The expected behavior is that it invokes selector on each element of source and returns the sum of the resulting values.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Decimal>>)

计算 Decimal 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of Decimal values that is obtained by invoking a projection function on each element of the input sequence.

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

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IQueryable<TSource>

一个 TSource 类型的值序列。A sequence of values of type TSource.

selector
Expression<Func<TSource,Decimal>>

要应用于每个元素的投影函数。A projection function to apply to each element.

返回

投影值的总和。The sum of the projected values.

例外

sourceselectornullsource or selector is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 对序列的投影值求和。The following code example demonstrates how to use Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) to sum the projected values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到本主题,请更改 selector 函数体。To extend the example to this topic, change the body of the selector function.

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
}

public static void SumEx3()
{
    List<Package> packages =
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 },
              new Package { Company = "Lucerne Publishing", Weight = 18.7 },
              new Package { Company = "Wingtip Toys", Weight = 6.0 },
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    // Calculate the sum of all package weights.
    double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
}

/*
    This code produces the following output:

    The total weight of the packages is: 83.7
*/

Structure Package
    Public Company As String
    Public Weight As Double
End Structure

Shared Sub SumEx3()
    Dim packages As New List(Of Package)(New Package() { _
            New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

    ' Calculate the sum of all package weights.
    Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

    MsgBox("The total weight of the packages is: " & totalWeight)
End Sub

'This code produces the following output:

'The total weight of the packages is: 83.7

注解

此方法至少具有一个类型 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>.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Decimal>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Decimal>>) 本身。The Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Decimal>>) method generates a MethodCallExpression that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Decimal>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Decimal>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Decimal>>) depends on the implementation of the type of the source parameter. 预期的行为是,它对 source 的每个元素调用 selector,并返回结果值的总和。The expected behavior is that it invokes selector on each element of source and returns the sum of the resulting values.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Decimal>>>)

计算可以为 null 的 Decimal 值序列之和,而该序列是通过对输入序列中的每个元素调用投影函数而获得的。Computes the sum of the sequence of nullable Decimal values that is obtained by invoking a projection function on each element of the input sequence.

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

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IQueryable<TSource>

一个 TSource 类型的值序列。A sequence of values of type TSource.

selector
Expression<Func<TSource,Nullable<Decimal>>>

要应用于每个元素的投影函数。A projection function to apply to each element.

返回

投影值的总和。The sum of the projected values.

例外

sourceselectornullsource or selector is null.

和大于 MaxValueThe sum is larger than MaxValue.

示例

下面的代码示例演示如何使用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) 对序列的投影值求和。The following code example demonstrates how to use Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>) to sum the projected values of a sequence.

备注

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。This code example uses an overload of this overloaded method that is different from the specific overload that this topic describes. 若要将此示例扩展到本主题,请更改 selector 函数体。To extend the example to this topic, change the body of the selector function.

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
}

public static void SumEx3()
{
    List<Package> packages =
        new List<Package> 
            { new Package { Company = "Coho Vineyard", Weight = 25.2 },
              new Package { Company = "Lucerne Publishing", Weight = 18.7 },
              new Package { Company = "Wingtip Toys", Weight = 6.0 },
              new Package { Company = "Adventure Works", Weight = 33.8 } };

    // Calculate the sum of all package weights.
    double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

    Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
}

/*
    This code produces the following output:

    The total weight of the packages is: 83.7
*/

Structure Package
    Public Company As String
    Public Weight As Double
End Structure

Shared Sub SumEx3()
    Dim packages As New List(Of Package)(New Package() { _
            New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

    ' Calculate the sum of all package weights.
    Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

    MsgBox("The total weight of the packages is: " & totalWeight)
End Sub

'This code produces the following output:

'The total weight of the packages is: 83.7

注解

此方法至少具有一个类型 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>.

Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Decimal>>>) 方法生成一个 MethodCallExpression,它表示作为构造的泛型方法调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Decimal>>>) 本身。The Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Decimal>>>) method generates a MethodCallExpression that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Decimal>>>) itself as a constructed generic method. 然后,它将 MethodCallExpression 传递到 IQueryProviderExecute<TResult>(Expression) 方法(由 source 参数的 Provider 属性表示)。It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

因执行表示调用 Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Decimal>>>) 的表达式树而发生的查询行为取决于 source 参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Sum<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Decimal>>>) depends on the implementation of the type of the source parameter. 预期的行为是,它对 source 的每个元素调用 selector,并返回结果值的总和。The expected behavior is that it invokes selector on each element of source and returns the sum of the resulting values.

适用于