• LINQ学习(八):强制立即执行


    说明:我们可以知道所有 LINQ 查询操作都由以下三个不同的操作组成:获取数据源、创建查询、执行查询。执行查询可分为延迟执行强制立即执行

    强制立即执行:

    1.使用聚合函数(Count、Max、Average、First)等强制执行,计算并返回单一实例结果

    2.可通过对查询(立即执行)或查询变量(延迟执行)调用 ToList 或 ToArray 等方法来强制执行查询。

    位于System.Linq中的Enumerable类提供一组用于查询实现 IEnumerable<T> 的对象的静态方法。具体方法介绍可查看MSDN

     

    测试数据:

            public class Student
            {
                public int NumId{ get; set; }           
                public string Name{ get; set; }
                public int Score { get; set; }
            }
                List<Student> students = new List<Student>{
                   new Student {NumId=3,Name="Terry", Score=55},
                   new Student {NumId=1,Name="AI", Score=80},
                   new Student {NumId=3,Name="Kobe", Score=40},
                   new Student {NumId=8,Name="James", Score=90},
                   new Student {NumId=5,Name="Love", Score=60},
                   new Student {NumId=6,Name="Wade", Score=85},
                };

    1.使用聚合函数

    说明:函数有很多,这里只介绍几个:Count、Max、Average、First。

    查询学生的人数:

                int count = (from student in students
                             select student.NumId).Count();
                Console.WriteLine("学生的人数:{0}", count);
                //学生的人数:6

    查询最高分:

                int maxscore = (from student in students
                                select student.Score).Max();
                Console.WriteLine("最高分:{0}", maxscore);
                //最高分:90

    查询平均分:

                double average = (from student in students
                                  select student.Score).Average();
                Console.WriteLine("平均分:{0}", average);
                //平均分:68.3333333333333

    返回列表第一个学生姓名:

                string Name = (from student in students
                               select student.Name).First();
                Console.WriteLine("返回列表第一个学生姓名:{0}", Name);
                //返回列表第一个学生姓名:Terry

    2.生成结果集

    说明:只有使用ToList 或 ToArray 等方法来强制转换,才能使变量立即获取结果集。

    转换为List集合:

                var querylist = (from student in students
                                 select student).ToList();
                foreach (var student in querylist)
                {
                    Console.WriteLine("{0} {1} {2}", student.NumId, student.Name, student.Score);
                    //3 Terry 55
                    //1 AI 80
                    //3 Kobe 40
                    //8 James 90
                    //5 Love 60
                    //6 Wade 85
             //注意:变量querylist已经存储结果集
    }

    转换为Array数组:

                var queryarray = (from student in students
                                 select student).ToArray();
                foreach (var student in queryarray)
                {
                    Console.WriteLine("{0} {1} {2}", student.NumId, student.Name, student.Score);
                    //3 Terry 55
                    //1 AI 80
                    //3 Kobe 40
                    //8 James 90
                    //5 Love 60
                    //6 Wade 85
             //注意:变量queryarray已经存储结果集
    }
    作者: ForEvErNoME
    出处: http://www.cnblogs.com/ForEvErNoME/
    欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望你能 推荐关注
     
     
  • 相关阅读:
    如何把本地项目上传到Github
    Git使用详细教程
    PhpStorm中报 “Cannot run program git.exe, 系统找不到指定的文件” 
    delete
    CentOS7 vs centos6
    CentOS 七 vs CentOS 6的不同
    内网端口转发方法汇总
    推荐给开发人员的6个实用命令行工具
    从大公司离职去小公司当 CTO 是一种怎样的体验?
    如果要做点对点的视频传输应该一般使用什么协议
  • 原文地址:https://www.cnblogs.com/ForEvErNoME/p/2612821.html
Copyright © 2020-2023  润新知