我正计划准备一些方法,这些方法向我返回数据库表中已过滤的元素集合,然后对这些集合执行查询。 我想知道第一个过滤是作为一个单独的语句执行还是会被加入。
例如
public IQueryable<Person> GetAlivePersons(){
return db.Persons.Where(p => !p.IsDeceased);
}
public IQueryable<Person> GetElderPeople(){
return GetAlivePersons().Where(p => p.Age > 75);
}
第二种方法会命中数据库一次还是两次?
谢谢
最佳答案
IQueryable
仅在您访问结果集合时被翻译成 sql。
那是因为您的代码命中了数据库一次。 This topic解释这一点
关于c# - Entity Framework : Multiple Where Statements Execution Plan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5150872/