2017.5.12总结
1.asp.net中IEnumberable和IQueryable区别
在使用EF查询数据的时候,我们常用的查询数据方式有linq to sql,linq to object
linq to sql返回值是IQueryable
linq to object 返回值类型是IEnumerable
在System.linq.Enumerable中,参数接收的是一个谓词表达式,也就是一个委托
那么在查询数据使用linq to sql的时 ,返回一个IQueryable
那么在查询数据使用linq to object的时候,会根据传递的参数不同返回不同的类型
1.Func<>谓词表达式,就是一个委托,委托一旦调用,就立即执行了,将执行结果保存在内存中。
2.Expression是一个表达式,会存储拼接表达式树,直到在运行期最终执行。
IQueryable是一种延迟加载机制,即查询后的结果会放在IQueryable集合中不会立即查询,而是会进行筛选后 将最终结果放入内存中 .二者表面上没任何区别,但是IQueryable效率更高