gpt4 book ai didi

c# - LINQ 中 IEnumerable 和 IQueryable "Where"子句的区别

转载 作者:行者123 更新时间:2023-12-02 22:29:45 25 4
gpt4 key购买 nike

我对下面的 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>();
}

最佳答案

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

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

关于c# - LINQ 中 IEnumerable 和 IQueryable "Where"子句的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com