Enumerable 和 Queryable的区别

 Enumerable  Queryable 他们都是静态类,位于命名控件 System.Linq下,

Enumerable 为 IEnumerable<T> 泛型接口提供扩展。Queryable为IQueryable<T>泛型接口提供扩展和继承了IEnumerable接口也就是他们的子类

IQueryable 在调用时实际上还是采用了Queryable的方法将查询条件转化成SQL语句执行

 IQueryable<Student> query1 = db.Student.Where(s => s.Score >= 80);

IEnumerable在调用时我们使用了.AsEnumerable()

  IEnumerable<Student> query1 = db.Student.AsEnumerable().Where(s => s.Score >= 80);
但是我们也可以不调用AsEnumerable方法 那实际上调用Queryablel类型where方法
.调用AsEnumerable方法时: 将查询条件视为一个委托,实际调用 Enumerable类中的Where方法

 程序实际上是先将 所有学生数据全部取出,在内存中进行过滤。

 

这两种方式都是延迟执行,遍历元素的时候才会真正的去查询数据库,


posted @ 2020-03-12 16:34  子小子小  阅读(433)  评论(0编辑  收藏  举报