我有一个基于某些输入参数(排序和过滤器)创建的IQueryable<Person>
。
是否可以将此IQueryable<T>
应用于我DbSet<T>
中的DbContext
?
例如:
// 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();
答案 0 :(得分:0)
实际上,上下文必须相同。 更糟糕的是,我在将linq查询中的ToList语句移动到linq查询外部时遇到了问题,即
// myQuery is an IQueryable from a different context
// This did not work
IEnumerable<Person> result = db.People.Where(p => myQuery.ToList().Contains(p.Id)).ToList();
// This worked
myList = myQuery.ToList();
IEnumerable<Person> result = db.People.Where(p => myList.Contains(p.Id)).ToList();
真的很奇怪不是吗?