在.Net 4.0上的C#上下文中,是否有实现IQueryable<T>的内置对象?
IQueryable<T>
yk9xbfzb1#
IQueryable
new
IQueryable是一个设计用于创建Queryable提供程序的接口,它通过构建一个可解析的表达式树,允许LINQ库针对外部数据存储进行利用。从本质上讲,Queryable需要一个上下文,即关于您正在查询的确切内容的信息。使用new创建任何IQueryable类型,无论是否可能,都不会让您走得很远。也就是说,任何IEnumerable都可以通过使用AsQueryable()扩展方法转换为IQueryable。但在功能上却与对普通IEnumerable对象使用LINQ方法时的构造非常不同。这可能是您在不设置实际IQueryable提供程序的情况下可以访问的最丰富的可查询对象源。这种转换对于单元测试基于LINQ的算法非常有用,因为您不需要实际的数据存储,只需一个可以模仿它的内存中数据的列表。
IEnumerable
AsQueryable()
xghobddn2#
好吧,你的问题有点奇怪...但是我 * 相信 *,如果你在Reflector中查看一个接口,它会给予你一个在加载的程序集中的实现者的列表。作为免责声明,我没有使用反射器,因为它去支付发挥,所以我可能是错误的。
fkaflof63#
EntityCollection和EnumerableQuery都是。我并不认为这两种方法都能帮到你。为了提供帮助,我们需要知道你真正想解决的问题。如果你正在编写一个LINQ提供程序,你应该阅读以下内容:http://msdn.microsoft.com/en-us/library/bb546158.aspx中的一个。他们建议您编写自己的实现。
yrdbyhpb4#
如果你正在寻找一种方法来示例化一个空的IQueryable列表,那么你可以使用:
IQueryable<MyEntity> = Enumerable.Empty<MyEntity>().AsQueryable()
4条答案
按热度按时间yk9xbfzb1#
IQueryable
对象是由可查询提供程序(例如LINQ to SQL、LINQ to Entities/Entity Framework等)生成的。实际上,在基本的.NET Framework中,您无法使用new
示例化任何实现IQueryable的对象。*IQueryable
是一个设计用于创建Queryable提供程序的接口,它通过构建一个可解析的表达式树,允许LINQ库针对外部数据存储进行利用。从本质上讲,Queryable需要一个上下文,即关于您正在查询的确切内容的信息。使用new
创建任何IQueryable类型,无论是否可能,都不会让您走得很远。也就是说,任何
IEnumerable
都可以通过使用AsQueryable()
扩展方法转换为IQueryable
。但在功能上却与对普通IEnumerable
对象使用LINQ方法时的构造非常不同。这可能是您在不设置实际IQueryable提供程序的情况下可以访问的最丰富的可查询对象源。这种转换对于单元测试基于LINQ的算法非常有用,因为您不需要实际的数据存储,只需一个可以模仿它的内存中数据的列表。xghobddn2#
好吧,你的问题有点奇怪...但是我 * 相信 *,如果你在Reflector中查看一个接口,它会给予你一个在加载的程序集中的实现者的列表。
作为免责声明,我没有使用反射器,因为它去支付发挥,所以我可能是错误的。
fkaflof63#
EntityCollection和EnumerableQuery都是。
我并不认为这两种方法都能帮到你。为了提供帮助,我们需要知道你真正想解决的问题。如果你正在编写一个LINQ提供程序,你应该阅读以下内容:http://msdn.microsoft.com/en-us/library/bb546158.aspx中的一个。
他们建议您编写自己的实现。
yrdbyhpb4#
如果你正在寻找一种方法来示例化一个空的
IQueryable
列表,那么你可以使用: