c# LINQ查询方法(2)

聚合类

Count、Max/Min、Average

直接通过代码进行演示

        static void Main(string[] args)
        {
            Student obj1 = new Student() { StuId = 1001, StuName = "学生1" };
            Student obj2 = new Student() { StuId = 1002, StuName = "学生2" };
            Student obj3 = new Student() { StuId = 1003, StuName = "学生3" };
            Student obj4 = new Student() { StuId = 1004, StuName = "学生4" };
            Student obj5 = new Student() { StuId = 1005, StuName = "学生5" };
            Student obj6 = new Student() { StuId = 1006, StuName = "学生6" };
            List<Student> stuList = new List<ConsoleApplication1.Student>() { obj1, obj2, obj3, obj4, obj5, obj6 };
            //混合模式
            var count = (from c in stuList
                         where c.StuId > 1004
                         select c).Count();
            //查询方法
            var count1 = stuList.Where(c => c.StuId > 1004).Count();
            var max = (from c in stuList
                       select c.StuId).Max();
            var min = (from c in stuList
                       select c.StuId).Min();
            var average = (from c in stuList
                       select c.StuId).Average();
            var sum = (from c in stuList
                       select c.StuId).Sum();
            Console.WriteLine("count=" + count + " count1=" + count1 + " max=" + max + " min=" + min + " average=" + average + " sum=" + sum);
            Console.ReadKey();
        }

结果:
在这里插入图片描述

排序类

ThanBy

下面用两种方式来实现排序,经过测试后结果相同

        static void Main(string[] args)
        {
            Student obj1 = new Student() { StuId = 1001, StuName = "学生1" };
            Student obj2 = new Student() { StuId = 1005, StuName = "学生2" };
            Student obj3 = new Student() { StuId = 1007, StuName = "学生3" };
            Student obj4 = new Student() { StuId = 1002, StuName = "学生4" };
            Student obj5 = new Student() { StuId = 1003, StuName = "学生5" };
            Student obj6 = new Student() { StuId = 1002, StuName = "学生6" };
            List<Student> stuList = new List<ConsoleApplication1.Student>() { obj1, obj2, obj3, obj4, obj5, obj6 };
            var stus1 = from s in stuList
                        orderby s.StuId,s.StuName
                        select s;
            var stus2 = stuList.OrderBy(s => s.StuId)
                .ThenBy(s => s.StuName)
                .Select(s => s);
            foreach(var s in stus1)
            {
                Console.WriteLine(s.StuName);
            }
            Console.WriteLine("--------------------");
            foreach (var s in stus2)
            {
                Console.WriteLine(s.StuName);
            }
            Console.ReadKey();

在这里插入图片描述

分区类查询

Take、Skip、TakeWhile、SkipWhile

Take 提取指定数量的项
Skip 跳过指定数量的项并获取剩余的项
TakeWhile 只有满足指定的条件,就会返回序列的元素,然后跳过剩余的元素
SkipWhile 只有满足指定的条件,就跳过序列中的元素,然后返回剩余元素
示例:

        static void Main(string[] args)
        {
            int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            var list1 = nums.Skip(1).Take(3);
            var list2 = nums.SkipWhile(i => i % 3 != 0).TakeWhile(i => i % 2 != 0);
            foreach (var item in list1) { Console.WriteLine(item); }
            Console.WriteLine("-------------");
            foreach (var item in list2) { Console.WriteLine(item); }
            Console.ReadLine();
        }

结果:
在这里插入图片描述

集合类查询

Distinct

去掉集合中的重复项
示例:

        static void Main(string[] args)
        {
            int[] nums = { 1, 3, 3, 4, 3, 6, 7, 8, 8 };
            var list1 = nums.Distinct();
            foreach (var item in list1) { Console.WriteLine(item); }
            Console.ReadLine();
        }

结果:
在这里插入图片描述

生成类查询

Range、Repeat

Range生成一个整数序列
Repeat生成一个重复项的序列(产生泛型序列)

示例:

        static void Main(string[] args)
        {
            var nums1 = Enumerable.Range(1, 10);
            var nums2 = Enumerable.Repeat("LINQ",5);
            foreach (var item in nums1) { Console.WriteLine(item); }
            Console.WriteLine("------------------------");
            foreach (var item in nums2) { Console.WriteLine(item); }
            Console.ReadLine();

结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Maybe_ch/article/details/88027072