MSDN Library
信息
您所需的主题如下所示。但此主题未包含在此库中。

Enumerable.Sum<TSource> 方法 (IEnumerable<TSource>, Func<TSource, Int32>)

2013/12/13

计算 Int32 值序列的和,这些值是通过对输入序列中的每个元素调用转换函数得来的。

Namespace:  System.Linq
程序集:  System.Core(位于 System.Core.dll 中)

public static int Sum<TSource>(
	this IEnumerable<TSource> source,
	Func<TSource, int> selector
)

类型参数

TSource

source 中的元素的类型。

参数

source
类型: System.Collections.Generic.IEnumerable<TSource>
用于计算和的值序列。
selector
类型: System.Func<TSource, Int32>
应用于每个元素的转换函数。

返回值

类型: System.Int32
投影值之和。

用法说明

在 Visual Basic 和 C# 中,您可以对类型为 IEnumerable<TSource> 的任何对象调用此方法作为实例方法。使用实例方法语法来调用此方法时,忽略第一个参数。

异常条件
ArgumentNullException

sourceselectornull

OverflowException

和大于 MaxValue

如果 source 中不包含任何元素,则此方法返回零。

如果提供了函数 selector(用于将 source 的成员投影为数值类型,即 Int32),则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中,Aggregate Into Sum() 子句转换为 Enumerable.Sum 的一个调用。

下面的代码示例演示如何使用 Sum<TSource>(IEnumerable<TSource>, Func<TSource, Double>) 计算序列投影值的和。

说明注意:

此代码示例使用此重载方法的重载,该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题,请更改 selector 函数的函数体。


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

      public static void SumEx1()
      {
         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 } };

         double totalWeight = packages.Sum(pkg => pkg.Weight);

         outputBlock.Text += String.Format("The total weight of the packages is: {0}", totalWeight) + "\n";
      }

      /*
       This code produces the following output:

       The total weight of the packages is: 83.7
      */



Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示:
© 2016 Microsoft