【发布时间】:2015-07-01 06:07:07
【问题描述】:
我有一个IQueryable<Person>,它是根据一些输入参数(排序和过滤)创建的。
是否可以将此IQueryable<T> 应用于我在DbContext 中的DbSet<T>?
例如:
// create the query from some parameters
IQueryable<Person> query = CreateQuery(parameters);
// apply the query somehow to an existing IQueryable / DbSet
AppContext db = new AppContext();
IEnumerable<Person> result = db.People.ApplyQuery(query).ToList();
【问题讨论】:
-
不应该
People实际上是Person?它们真的是不同的类型吗? -
db.People的类型为DbSet<Person>。 IQuerable 和 DbSet 具有相同的类型 -
你能改变
CreateQuery方法吗?我遇到了类似的问题,但通过创建基本查询 (Select(x => x)) 并根据提供的parameters(如果有)添加过滤器和排序来解决它。 -
我可以更改
CreateQuery,使其接收现有的IQuerable,但一点也不优雅。 (另外因为在创建查询时我可能无法访问 DbContext。
标签: c# linq entity-framework linq-to-sql