LINQ:Sum Max Min Average

这边以Sum为例,Max,Min,Average用法类似

一、 Array 

 static void SumArray()
        {
            Console.WriteLine("SumArray:");
            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);
        }

        static void SumArrayWithFilter()
        {
            Console.WriteLine("SumArrayWithFilter:");
            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);
        }

        static void SumArrayWithPredicate()
        {
            Console.WriteLine("SumArrayWithPredicate:");
            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;
            });

            Console.WriteLine("Sum = " + MSTotal);
        }

测试结果如下:

 

 二、Complex Type

1.数据准备

 public class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int AddressId { get; set; }
        public int DepartmentId { get; set; }
        public int Salary { get; set; }
        public static List<Employee> GetAllEmployees()
        {
            return new List<Employee>()
            {
              new Employee { ID = 1, Name = "张三", AddressId = 1,Salary = 10000, DepartmentId=10},
                new Employee { ID = 2, Name = "李四", AddressId =2,Salary = 20000, DepartmentId=20},
                new Employee { ID = 3, Name = "王五", AddressId = 0,Salary = 15000, DepartmentId=0},
                new Employee { ID = 4, Name = "钱六", AddressId = 0,Salary = 10000, DepartmentId=0},
                new Employee { ID = 5, Name = "郑七", AddressId = 5,Salary = 30000, DepartmentId=0},
                new Employee { ID = 6, Name = "苏八", AddressId = 6,Salary = 50000, DepartmentId=10}
            };
        }
    }

2.Sum

 static void Sum()
        {
            Console.WriteLine("SumComplexType:");
            //Using Method Syntax
            Console.WriteLine("方式一:");
            var TotalSalaryMS = Employee.GetAllEmployees()
                              .Sum(emp => emp.Salary);
            Console.WriteLine("Sum Of Salary = " + TotalSalaryMS);
            //Using Query Syntax
            Console.WriteLine("方式二:");
            var TotalSalaryQS = (from emp in Employee.GetAllEmployees()
                                 select emp).Sum(e => e.Salary);

            Console.WriteLine("Sum Of Salary = " + TotalSalaryQS);
        }

        static void SumWithWhere()
        {
            Console.WriteLine("SumComplexTypeWithFilter:");
            //Using Method Syntax
            Console.WriteLine("方式一:");
            var TotalSalaryMS = Employee.GetAllEmployees()
                 .Where(emp => emp.DepartmentId == 10)
                              .Sum(emp => emp.Salary);
            Console.WriteLine("Sum Of Salary = " + TotalSalaryMS);
            //Using Query Syntax
            Console.WriteLine("方式二:");
            var TotalSalaryQS = (from emp in Employee.GetAllEmployees()
                                 where emp.DepartmentId == 10
                                 select emp).Sum(e => e.Salary);

            Console.WriteLine("Sum Of Salary = " + TotalSalaryQS);
        }

3.测试结果如下:

 三、参考网址

https://dotnettutorials.net/lesson/linq-sum-method/

posted @ 2022-08-26 17:59  katesharing  阅读(70)  评论(0)    收藏  举报