将IQueryable应用于另一个IQueryable / DbContext

时间:2015-07-01 06:07:08

标签: c# linq entity-framework linq-to-sql

我有一个基于某些输入参数(排序和过滤器)创建的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();

1 个答案:

答案 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(); 

真的很奇怪不是吗?