理解IEnumerable和IQueryable

IEnumberable和IQueryable这两个接口经常给在Linq和Lambda中使用,具体使用场景如下所示:

项目 IEnumerable IQueryable
命名空间 System.Collections Namespace System.Linq Namespace
继承于 No base interface 继承于IEnumerable
Deferred Execution 支持 支持
延迟加载 不支持 支持
工作流程 把查询的数据加载在内存中,然后再筛选数据,因此这个操作比较占用内存,运行慢 当从数据库中查询数据,IQueryable在服务器端根据所有的filter条件执行查询操作,因此该操作需要更少的工作而运行快
适用于 LINQ to Object and LINQ to XML queries LINQ to SQL queries.
Extension mehtod parameter Extension methods supported Extension methods in IEnumerable takes functional objects
使用场合 遍历内存中的数据集合(如List,Array等) 当查询非内存中的数据集合(如远程数据库,service等)
posted @ 2020-05-27 14:10  LuckyZLi  阅读(207)  评论(0编辑  收藏  举报