one*_*mer 40 linq types interface iqueryable c#-4.0
在.Net 4.0上的C#的上下文中,是否有任何内置对象可以实现IQueryable<T>
?
Kei*_*thS 59
IQueryable
对象由可查询提供程序生成(例如,LINQ to SQL,LINQ to Entities/Entity Framework等).实际上,您无法new
在基本.NET Framework中实例化任何实现IQueryable的内容.
IQueryable
是一个用于创建可查询提供程序的接口,它允许通过构建可解析的表达式树来利用LINQ库对外部数据存储.从本质上讲,Queryables需要一个上下文 - 有关您正在查询的内容的信息.使用new
创建任何IQueryable类型,无论是否可能,都不会让你走得太远.
话虽这么说,任何IEnumerable
都可以IQueryable
通过使用AsQueryable()
扩展方法转换为.这在幕后创建了一个表面上相似但功能上非常不同的构造,就像对普通IEnumerable
对象使用LINQ方法一样.这可能是您无需设置实际IQueryable提供程序即可访问的最丰富的可查询源.这种转换对于基于LINQ的算法进行单元测试非常有用,因为您不需要实际的数据存储,只需要一个可以模仿它的内存数据列表.