2

我对下面的 FindBy 和 FindByExp 函数的底层机制有点困惑。我了解 FindyByExp 将在数据库端执行谓词。但是 FindBy 函数呢?它是否从数据库中获取所有对象并首先将它们加载到内存中,然后执行谓词?

    public IQueryable<T> FindBy(Func<T, bool> predicate)
    {
        return context.Get<T>().Where(predicate).AsQueryable<T>();
    }

    public IQueryable<T> FindByExp(Expression<Func<T, bool>> predicate)
    {
        return context.Get<T>().Where(predicate).AsQueryable<T>();
    }
4

1 回答 1

5

FindBy当您枚举结果时,将从数据库中获取所有对象并在程序的内存中过滤它们。 T

FindByExp将更改在数据库服务器上执行的查询并添加 where 子句。

于 2012-09-19T15:23:54.470 回答