//创建一个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语句进行查询,可以有效的提高查询效率,如果里面用到了你自定义或者不支持的函数,他就会把数据全部查询到内存里面来,进行根据你的函数进行筛选或者处理等操作,数据量大他速度是非常感人的。