c# - Entity Framework : Multiple Where Statements Execution Plan

标签 c# sql entity-framework iqueryable

我正计划准备一些方法,这些方法向我返回数据库表中已过滤的元素集合,然后对这些集合执行查询。 我想知道第一个过滤是作为一个单独的语句执行还是会被加入。

例如

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/

相关文章:

c# - 将 C# 对象存储在 SQL Server 列中

c# - Prism 5.0 在 ViewModel 中包装模型属性

c# - 扩展方法和类型推断

sql - 需要从左连接的表中获取多个值

java.sql.SQL语法错误异常 : ORA-00903: invalid table name

sql - 使用 Rails 'contains operator'(或替代方案)搜索多个值

c# - 不支持关键字 : Metadata

entity-framework - 如何在代码优先的多对多关系中指定关系名称

c# - 无法在计算机 '.' 上打开 <MyService> 服务

c# - Entity Framework 迁移-使用现有条目的值添加新列