首页 > 代码库 > 2017.5.12总结

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效率更高

 

2017.5.12总结