考虑以下因素:
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/