c# - 如何从 IQueryable<T> 获取原始集合

标签 c# linq iqueryable

考虑以下因素:

T[] itemArray = // initialized values
IQueryable<T> itemQuery = itemArray.AsQueryable().Where(*/some query*/).Skip(5).Etc() ...

是否可以从 itemQuery 获取底层集合或数据集(在本例中为 itemArray)?在我看来,如果对查询表达式进行求值,则必须针对原始集合进行求值,因此该集合必须存储在 IQueryable 中或由 IQueryable 引用。

如何做到这一点?

注意:
这是使用 MongoDB linq 驱动程序(来自 10gen)的大型项目的一部分,我们尝试从基于 mongo 集合的 IQueryable 中提取原始 MongoCollection。尽管我们专门针对 MongoDB 使用 IQueryable<>,但这个问题的答案应该是 IQueryable<> 固有的,因此独立于 MongoDB 驱动程序。

最佳答案

IQueryable 很可能确实引用了底层集合(可能通过多个间接层),但它不会公开,因此您无法访问它,至少不是以任何我认为合理的方式,也不是非常非常困惑的黑客行为。

关于c# - 如何从 IQueryable<T> 获取原始集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12715827/

相关文章:

c# - 如何从 Fluent Api 检索实体配置

c# - C#中使用XML文件存储数据

c# - 使用并发字典 - 线程安全集合修改

javascript - $.ajax 成功 : value is always undefined

c# - 可扩展的 Linq 查询

c# - Linq to XML 生成 DDL

c# - Equals 方法在调试和 Release模式下的行为不同

c# - 实例化空 IQueryable 以与 Linq to sql 一起使用

c# - 如何使 LINQ-to-Objects 处理投影?

linq - Cast<T> 是否会导致 IQueryable 在 Linq-to-SQL 中求值?它的使用有什么限制?