IQueryable<T>和IEnenable<T>之间有什么区别?

IQueryable<T>和IEnenable<T>之间有什么区别?

.之间的区别是什么?IQueryable<T>IEnumerable<T>?


另见IQueryable和IEnement的区别是什么?与这个问题重叠。


慕婉清6462132
浏览 434回答 3
3回答

Cats萌萌

首先,IQueryable<T>&nbsp;延展这个IEnumerable<T>接口,所以您可以使用“普通”进行任何操作。IEnumerable<T>,您也可以使用IQueryable<T>.IEnumerable<T>只是有一个GetEnumerator()方法返回Enumerator<T>你可以称之为MoveNext()方法来迭代T.什么IQueryable<T>有那个吗?IEnumerable<T>&nbsp;不是两个特别的属性-一个指向查询提供程序(例如,LINQtoSQL提供程序)和另一个指向查询表达式表示IQueryable<T>对象作为一个运行时可遍历的抽象语法树,该抽象语法树可由给定的查询提供程序理解(在大多数情况下,您无法将LINQtoSQL表达式赋予LINQtoEntiesProvider,而不会引发异常)。表达式可以是对象本身的常量表达式,也可以是一组由查询运算符和操作数组成的复杂树。查询提供程序的IQueryProvider.Execute()或IQueryProvider.CreateQuery()方法调用表达传递给它,然后查询结果或另一个查询结果。IQueryable分别返回。

FFIVE

主要区别在于LINQ运算符用于IQueryable<T>拿走,带走Expression对象而不是委托,这意味着它接收到的自定义查询逻辑(例如谓词或值选择器)是以表达式树的形式出现的,而不是委托给方法的。IEnumerable<T>对于处理内存中迭代的序列是很好的,但是IQueryable<T>允许内存不足,例如远程数据源,例如数据库或Web服务。查询执行:执行查询的位置。“正在进行中”,通常所需的是执行查询的每个部分所需的代码(作为代码)。执行的位置程序外,查询的逻辑必须用数据表示,以便LINQ提供程序可以将其转换为内存不足执行的适当形式-无论是LDAP查询、SQL还是其他什么。详见:林克:IEnumerable<T>和IQueryable<T>C#3.0和LINQ."回归IEnumerable<T>VSIQueryable<T>".NET和C#开发人员的反应性编程-介绍IEnumerable,&nbsp;IQueryable,&nbsp;IObservable,和IQbservable
打开App,查看更多内容
随时随地看视频慕课网APP