使用EF配合Linq语句进行查询

			//创建一个EF对象
            var ef = new DemoDatabaseEntities1();

            //查询 Grade 表的数据 Id > 4 的记录
            IQueryable<Grade> temps = from g in ef.Grade
                                      where g.Id > 4
                                      select g;

            /*语法 
                from [每条记录对象] 类似于 foreach (var item in args)里面的 item
                where [条件语句]    进行筛选元素
                select [处理语句]   
            */

            // linq 语句会生成 DbQuery<T> 对象,这个对象是一个 延迟加载对象 ,这个在Linq中非常重要的特性,有利于解耦
            //只有在进行 
            //  遍历【foreach】 
            //  转换等操作【ToList()、ToArray()、ToDictionary()、ToLookup()】
            //  获取数据【First()、FirstOrDefault()】
            //  的时候才会直接得到相应的值【非延迟加载对象】
            //DbQuery<Grade> cTemps = (DbQuery<Grade>) temps;

            //temps 对象的类型为 
            //遍历数据库Grade表中的所有元素【延迟加载对象->把表内所有元素转换成实体集合List<Grade>->ForEach遍历元素】
            temps.ToList().ForEach(f =>
            {
                //向控制台打印数据
                Console.WriteLine("Id={0}的C#成绩为{1},Java成绩为{2}", f.Id, f.CSharp, f.Java);
            });

            Console.WriteLine("OK");
            Console.ReadKey();

在这里插入图片描述
在这里插入图片描述
这个生成的SQL语句是根据,刚才写的Linq语句生成的,如果你写的Linq语句没有不支持的语句或者函数,他就会把他转换成SQL语句进行查询,可以有效的提高查询效率,如果里面用到了你自定义或者不支持的函数,他就会把数据全部查询到内存里面来,进行根据你的函数进行筛选或者处理等操作,数据量大他速度是非常感人的。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43251547/article/details/82817735