c# - dapper 会用谓词做什么?

标签 c# dapper

如果我有一个返回 List of Dogs 的方法,Dapper 是否将 Where 谓词转换为 SQL 在哪里?还是先获取所有狗,然后过滤列表?

public IList<Dog> GetDogsBy(Func<Dog, bool> predicate)
{
    return db.Query<Dog>("SELECT * FROM Dog",null).Where(predicate).ToList();
}

最佳答案

这取决于解析 Where 时重载解析的作用。 .

如果调用结果QueryList<Dog>你有一个using System.Linq;指令,参数是委托(delegate),然后是 Where将解析为 Where 的 LINQ-to-objects 版本.所以选择查询将在服务器上运行,然后是 Where。将在客户端上运行。

如果 Query 的结果是IQueryable<Dog>参数是 Expression然后重载解析将选择 Where它与现有查询相结合。执行该查询时,Where在查询提供程序选择运行它的任何一侧运行,通常是服务器。

关于c# - dapper 会用谓词做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29356487/

相关文章:

.net - 为什么 Dapper dot net 不打开和关闭连接本身?

c# - 无需等待即可开始任务

c# - C#异步套接字: Is this thread-safe and correctly done?

c# - 如何从窗口内的另一个类调用方法?

c# - 在 C# 中为 Dapper 创建动态类型

c# - 如何将 MSSQL 同步到 Elasticsearch?

sql-update - 使用 Dapper.Contrib Update,以及具有特殊帮助器属性的类

c# - 在 .dotnet (c#) 中,如果没有任何订阅,是否仍会引发事件?

c# - 如何在给定视频 ID 的情况下获取 youtube channel ID 和名称

dapper - 使用 Dapper 在子对象中插入数据