IQueryable<T>和IEnumerable<T>之间的区别是什么?
另见IQueryable和IEnumerable之间的区别是什么,与这个问题重叠。
IQueryable<T>和IEnumerable<T>之间的区别是什么?
另见IQueryable和IEnumerable之间的区别是什么,与这个问题重叠。
当前回答
Ienumerable:当我们想处理进程内内存时,即没有数据连接 可查询:何时处理SQL server,即数据连接 Ilist:添加对象、删除对象等操作
其他回答
IQueryable比IEnumerable更快,如果我们正在处理来自数据库的大量数据,因为IQueryable只从数据库中获取所需的数据,而IEnumerable无论是否需要从数据库中获取所有数据
IEnumerable引用了一个集合,而IQueryable只是一个查询,它将在表达式树中生成。我们将运行这个查询从数据库中获取数据。
Ienumerable:当我们想处理进程内内存时,即没有数据连接 可查询:何时处理SQL server,即数据连接 Ilist:添加对象、删除对象等操作
IEnumerable: IEnumerable最适合使用内存中的集合(或本地查询)。 IEnumerable不能在项目之间移动,它只是向前的集合。
这个IQueryable: IQueryable最适合远程数据源,如数据库或web服务(或远程查询)。 IQueryable是一个非常强大的特性,它支持各种有趣的延迟执行场景(比如分页和基于组合的查询)。
所以当你必须简单地遍历内存中的集合时,使用IEnumerable,如果你需要对集合做任何操作,如Dataset和其他数据源,使用IQueryable
我们使用IEnumerable和IQueryable来操作从数据库中检索的数据。IQueryable继承自IEnumerable,所以IQueryable包含了IEnumerable的所有特性。IQueryable和IEnumerable之间的主要区别是IQueryable使用过滤器执行查询,而IEnumerable先执行查询,然后根据条件过滤数据。
更详细的区别如下:
IEnumerable
IEnumerable在系统中存在。集合名称空间 IEnumerable在服务器端执行选择查询,在客户端加载内存中的数据,然后筛选数据 IEnumerable适用于从List、Array等内存集合中查询数据 IEnumerable有利于LINQ to Object和LINQ to XML查询
这个IQueryable
系统中存在IQueryable功能。Linq命名空间 IQueryable在服务器端执行一个带有所有过滤器的“选择查询” IQueryable适用于从内存外(如远程数据库,服务)集合中查询数据 IQueryable有利于LINQ到SQL的查询
所以IEnumerable通常用于处理内存中的集合,而IQueryable通常用于操作集合。