如果我有一个返回 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
时重载解析的作用。 .
如果调用结果Query
是 List<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/