對於謂詞,小巧玲瓏會做什麼?

c# dapper

如果我有一個返回List of Dogs方法, Dapper會將Where謂詞轉換為SQL Where嗎?或者它先得到所有的狗然後過濾列表?

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;指令和參數是一個代表,那麼Where將解析到LINQ到對象的版本Where 。因此,select查詢將在服務器上運行,然後Where將在客戶端上運行。

如果Query的結果是IQueryable<Dog>且參數是Expression則重載決策將選擇Where與現有查詢組合。執行該查詢時, Where運行在查詢提供程序選擇運行它的任何一側,通常是服務器。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow