LINQ Sum Method in C#

LINQ Sum Method in C# with Examples

In this article, I am going to discuss the LINQ Sum Method in C# with Examples. Please read our previous article where we discussed the basics of LINQ Aggregate Functions in C#. As part of this article, we are going to discuss the following pointers.

  1. What is LINQ Sum Method in C#?
  2. Multiple Examples to Understand Sum Method using both Method and Query Syntax.
What is LINQ Sum Method in C#?

The LINQ Sum() Method belongs to the category of Aggregate Operators. The LINQ Sum method in C# is used to calculate the total or sum of numeric values in the collection.

Example to Understand Sum Method in C#:

Let us understand the LINQ Sum() method with Examples using C#. The following example calculates the sum of all integers present in the integer collection using both query and method syntax. The point that you need to remember is the Sum Method is going to work with numeric values only. In this case, the collection stores integer values, and hence we can apply the LINQ Sum Method. We don’t have any operator called sum in the LINQ Query Syntax. So here we need to use mixed syntax.

using System;
using System.Linq;
namespace LINQDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] intNumbers = new int[] { 10, 30, 50, 40, 60, 20, 70, 90, 80, 100 };

            //Using Method Syntax
            int MSTotal = intNumbers.Sum();

            //Using Query Syntax
            int QSTotal = (from num in intNumbers
                         select num).Sum();

            Console.WriteLine("Sum = " + QSTotal);

            Console.ReadKey();
        }
    }
}

Output: Sum = 550

Example to Understand LINQ Sum Method with Where Extension Method using C#

Let us see an example to Understand how we can use the LINQ Sum Method along with the Where Extension Method in C# using both Method and Query Syntax. Now our requirement is to calculate the sum of all numbers which is greater than 50. The following example code exactly does the same.

using System;
using System.Linq;
namespace LINQDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] intNumbers = new int[] { 10, 30, 50, 40, 60, 20, 70, 90, 80, 100 };

            //Using Method Syntax
            int MSTotal = intNumbers.Where(num => num > 50).Sum();

            //Using Query Syntax
            int QSTotal = (from num in intNumbers
                           where num > 50
                           select num).Sum();

            Console.WriteLine("Sum = " + QSTotal);

            Console.ReadKey();
        }
    }
}

Output: Sum = 400

Example to Understand How to use LINQ Sum Method with Predicate in C#

Let us see an example to Understand How to use LINQ Sum Method with Predicate in C# using both Method and Query Syntax. Instead of using the Where Extension method to filter the data, we can also use the other overloaded version of the Sum method which takes a Predicate as a parameter, and within that predicate, we can write the logic to filter the data. In the below example, within the Sum Method, we are using a Predicate and we are providing the condition of whether the number is greater than 50 or not. If the number is greater than 50, then we are returning true else we are returning false. The following example will calculate the sum of all integers which are greater than 50.

using System;
using System.Linq;
namespace LINQDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] intNumbers = new int[] { 10, 30, 50, 40, 60, 20, 70, 90, 80, 100 };

            //Using Method Syntax with a Predicate
            int MSTotal = intNumbers.Sum(num => {
                if (num > 50)
                    return num;
                else
                    return 0;
            });

            //Using Query Syntax with a Predicate
            int QSTotal = (from num in intNumbers
                           select num).Sum(num => {
                               if (num > 50)
                                   return num;
                               else
                                   return 0;
                           });

            Console.WriteLine("Sum = " + QSTotal);

            Console.ReadKey();
        }
    }
}

Output: Sum = 400

Example to Understand LINQ Sum Method with Complex Type in C#:

Let us see an example to Understand How to use LINQ Sum Method with Complex Type in C# using both Method and Query Syntax. We are going to work with the following Employee class. As you can see, it is a very simple Employee class with four properties such as ID, Name, Salary, and Department. Here, we also created one method i.e. GetAllEmployees() which will return the list of all the employees and this is going to be our data source.

using System.Collections.Generic;
namespace LINQDemo
{
    public class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Salary { get; set; }
        public string Department { get; set; }

        public static List<Employee> GetAllEmployees()
        {
            List<Employee> listStudents = new List<Employee>()
            {
                new Employee{ID= 101,Name = "Preety", Salary = 10000, Department = "IT"},
                new Employee{ID= 102,Name = "Priyanka", Salary = 15000, Department = "Sales"},
                new Employee{ID= 103,Name = "James", Salary = 50000, Department = "Sales"},
                new Employee{ID= 104,Name = "Hina", Salary = 20000, Department = "IT"},
                new Employee{ID= 105,Name = "Anurag", Salary = 30000, Department = "IT"},
                new Employee{ID= 106,Name = "Sara", Salary = 25000, Department = "IT"},
                new Employee{ID= 107,Name = "Pranaya", Salary = 35000, Department = "IT"},
                new Employee{ID= 108,Name = "Manoj", Salary = 11000, Department = "Sales"},
                new Employee{ID= 109,Name = "Sam", Salary = 45000, Department = "Sales"},
                new Employee{ID= 110,Name = "Saurav", Salary = 25000, Department = "Sales"}
            };

            return listStudents;
        }
    }
}

Now, our requirement is to calculate the Sum of the Salaries of all the Employees. The following example calculates the sum of all employee’s salaries using the LINQ Sum method with both Method and Query Syntax. Here, to the Sum method, we are specifying the numeric Salary column using a lambda expression.

using System;
using System.Linq;
namespace LINQDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //Using Method Syntax
            var TotalSalaryMS = Employee.GetAllEmployees()
                              .Sum(emp => emp.Salary);

            //Using Query Syntax
            var TotalSalaryQS = (from emp in Employee.GetAllEmployees()
                                 select emp).Sum(e => e.Salary);
            
            Console.WriteLine("Sum Of Salary = " + TotalSalaryMS);

            Console.ReadKey();
        }
    }
}

Output: Sum Of Salary = 266000

Example using Sum and Where Extension Method in C#:

Let us see an example to Understand How to use both LINQ Sum and Where Extension Methods with Complex Type using both Method and Query Syntax. Our requirement is to calculate the sum of the salary of all the employees who belong to the IT department. The following example exactly does the same. Using the Where Extension Method we are filtering the IT department employees and using the Sum method we are specifying the Salary numeric column which will calculate the sum of the salaries of only IT department employees.

using System;
using System.Linq;
namespace LINQDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //Calculate the Sum of Salaries of IT Department

            //Using Method Syntax
            var TotalSalaryMS = Employee.GetAllEmployees()
                              .Where(emp => emp.Department == "IT")
                              .Sum(emp => emp.Salary);

            //Using Query Syntax
            var TotalSalaryQS = (from emp in Employee.GetAllEmployees()
                                 where emp.Department == "IT"
                                 select emp).Sum(e => e.Salary);

            Console.WriteLine("IT Department Total Salary = " + TotalSalaryQS);

            Console.ReadKey();
        }
    }
}

Output: IT Department Total Salary = 120000

Let’s rewrite the previous example using the custom predicate. As you can see, within the Sum method, we are checking the Department property value and if the Department is It, we are returning the corresponding Salary else we are returning 0.

using System;
using System.Linq;
namespace LINQDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //Using Method Syntax and Predicate
            var TotalSalaryMS = Employee.GetAllEmployees()
                              .Sum(emp => {
                                  if (emp.Department == "IT")
                                      return emp.Salary;
                                  else
                                      return 0;
                              });
            
            Console.WriteLine("IT Department Total Salary = " + TotalSalaryMS);

            Console.ReadKey();
        }
    }
}

Output: IT Department Total Salary = 120000

In the next article, I am going to discuss the LINQ Max Method in C# with Examples. Here, in this article, I try to explain the LINQ Sum Method in C# with examples. I hope you understood the need and use of the LINQ Sum Method with Examples.

1 thought on “LINQ Sum Method in C#”

  1. Paul Olujide Adebayo

    There is a need for me to search a database table with date as search-field. I will need StartDate and EndDate.
    How can this be achieved? Help!

Leave a Reply

Your email address will not be published. Required fields are marked *