C# IEnumberable & IQueryable 区别

转 http://www.cnblogs.com/shw0099/p/6251466.html

在应用到IEnumberable 和IQueryable两个接口时,代码往往很相似,从而造成了很多困惑,然后事实上他们两是有很大的区别的,各种都有自己特定的使用场景。

下面是IEnumberable和IQueryable的属性对比:

 

 

 IEnumerable IQueryable
NamespaceSystem.Collections NamespaceSystem.Linq Namespace
继承于No base interface继承于 IEnumerable
Deferred Execution支持支持
Lazy Loading不支持支持
如何工作当从数据库中查询数据,IEnumberable在服务器端执行查询操作,下载数据到客户端的内存中,然后再筛选数据,因此这个操作需要更多的工作而变得缓慢。当从数据库中查询数据,IQueryable在服务器端根据所有的filter条件执行查询操作,因此该操作需要更少的工作而运行快。
适用于LINQ to Object and LINQ to XML queries.LINQ to SQL queries.
自定义查询不支持支持使用CreateQuery 和Execute 方法。
Extension mehtod
parameter
Extension methods supported in IEnumerable takes functional objects.Extension methods supported in IEnumerable takes expression objects i.e. expression tree.
使用场合当从内存中的数据集合(如LIst,Array etc)查询数据的时候当查询非内存中的数据集合(如远程数据库,service等)时。
最常使用内存遍历Paging

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值