Sum(TSource) Method (IEnumerable(TSource), Func(TSource, Double))

# Enumerable.Sum<TSource> Method (IEnumerable<TSource>, Func<TSource, Double>)

Computes the sum of the sequence of Double values that are obtained by invoking a transform function on each element of the input sequence.

Namespace:  System.Linq
Assembly:  System.Core (in System.Core.dll)

## Syntax

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

```

#### Type Parameters

TSource

The type of the elements of source.

#### Parameters

source
Type: System.Collections.Generic.IEnumerable<TSource>
A sequence of values that are used to calculate a sum.
selector
Type: System.Func<TSource, Double>
A transform function to apply to each element.

#### Return Value

Type: System.Double
The sum of the projected values.

#### Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IEnumerable<TSource>. When you use instance method syntax to call this method, omit the first parameter.

## Exceptions

ExceptionCondition
ArgumentNullException

source or selector is null.

## Remarks

This method returns zero if source contains no elements.

You can apply this method to a sequence of arbitrary values if you provide a function, selector, that projects the members of source into a numeric type, specifically Double.

In Visual Basic query expression syntax, an Aggregate Into Sum() clause translates to an invocation of Enumerable.Sum.

## Examples

The following code example demonstrates how to use Sum<TSource>(IEnumerable<TSource>, Func<TSource, Double>) to sum the projected values of a sequence.

```
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
*/

```

## Version Information

#### Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone