C# Linq的Sum()方法 – 计算序列中元素的总和

  • Post category:C#

C# Linq的Sum()方法可以用于计算序列中数值类型元素的总和。下面是该方法的详细攻略:

语法

public static int Sum<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int> selector);
public static long Sum<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,long> selector);
public static float Sum<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,float> selector);
public static double Sum<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,double> selector);
public static decimal Sum<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,decimal> selector);
public static int? Sum<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int?> selector);
public static long? Sum<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,long?> selector);
public static float? Sum<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,float?> selector);
public static double? Sum<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,double?> selector);
public static decimal? Sum<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,decimal?> selector);

参数

  • source:必需。要计算元素总和的序列。
  • selector:必需。对序列的每个元素执行的函数,该函数返回元素的数值类型。

返回值

返回一个数值类型的值,该值表示序列中所有元素的总和。

示例

下面是两个使用Sum()方法的示例:

示例 1

int[] numbers = { 10, 20, 30, 40 };
int sum = numbers.Sum();
Console.WriteLine("总和是:" + sum);

输出:

总和是:100

示例 2

List<Product> products = new List<Product>
{
    new Product { Name = "苹果", Price = 1.5m, Quantity = 20 },
    new Product { Name = "香蕉", Price = 2.5m, Quantity = 10 },
    new Product { Name = "橙子", Price = 1m, Quantity = 30 },
};

decimal totalPrice = products.Sum(p => p.Price * p.Quantity);
Console.WriteLine("总价是:" + totalPrice);

输出:

总价是:65

在以上示例中,第一个示例用于计算整数数组中所有元素的总和,第二个示例用于计算包含 Product 对象的列表中每个对象的总价。在第二个示例中,使用了lambda表达式,指定了每个产品的价格和数量,为Sum()方法提供计算的数据源。