# [LINQ Operators] Sum

The “Sum” operator calculates the sum of a sequence of numeric values.

## 1. Sample Data Objects

To test examples, you need to include the <data classes> in your project.

## 2. “Sum” operator

• NonDeferred operator
• Purpose: Aggregate

## 3. Prototypes

```public static NUMERICTYPE Sum(
this IEnumerable<NUMERICTYPE> source)

public static Nullable<NUMERICTYPE> Sum(
this IEnumerable<Nullable<NUMERICTYPE>> source)

public static NUMERICTYPE Sum(
this IEnumerable<T> source,
Func<T, NUMERICTYPE> selector)

public static Nullable<NUMERICTYPE> Sum<T>(
this IEnumerable<T> source,
Func<T, Nullable<NUMERICTYPE>> selector)
```

The “NUMERICTYPE” can be int, long, double, or decimal. There are many overloaded “Sum()” operators but they do the same thing: returns the sum of numeric values .

## 4. Example 1 (Standard Operator)

```int[] nums = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

int totalNum = nums.Sum();
Console.WriteLine(\$"The sum from 1 to 10: {totalNum}"); // 55
```

## 5. Example 2 (Query Expression)

There’s no corresponding query expression for the “Sum()” operator.

## 6. Example 3 (Standard Operator) – with a condition

```IEnumerable<Food> foods = Food.GetFoods();

var specialFoods
= foods.Where(f => (f.Name == "Special"));
decimal totalPrice = foods.Except(specialFoods).Sum(f => f.Price ?? 0M);
Console.WriteLine(\$"The total price: {totalPrice}"); // 27.71
```

The null values are ignored in the next example.

```IEnumerable<Food> foods = Food.GetFoods();

decimal? totalPrice = foods.Sum(f => f.Price);
Console.WriteLine("The total price: {totalPrice ?? 0M}"); // 27.71
```