linq .Net 4.0中有哪些实现IQueryable的可示例化类型< T>?

pbwdgjma  于 2022-12-06  发布在  .NET
关注(0)|答案(4)|浏览(147)

在.Net 4.0上的C#上下文中,是否有实现IQueryable<T>的内置对象?

yk9xbfzb

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的算法非常有用,因为您不需要实际的数据存储,只需一个可以模仿它的内存中数据的列表。

xghobddn

xghobddn2#

好吧,你的问题有点奇怪...但是我 * 相信 *,如果你在Reflector中查看一个接口,它会给予你一个在加载的程序集中的实现者的列表。
作为免责声明,我没有使用反射器,因为它去支付发挥,所以我可能是错误的。

fkaflof6

fkaflof63#

EntityCollectionEnumerableQuery都是。
我并不认为这两种方法都能帮到你。为了提供帮助,我们需要知道你真正想解决的问题。如果你正在编写一个LINQ提供程序,你应该阅读以下内容:http://msdn.microsoft.com/en-us/library/bb546158.aspx中的一个。
他们建议您编写自己的实现。

yrdbyhpb

yrdbyhpb4#

如果你正在寻找一种方法来示例化一个空的IQueryable列表,那么你可以使用:

IQueryable<MyEntity> = Enumerable.Empty<MyEntity>().AsQueryable()

相关问题