我在我的程序中使用LINQ到實體執行過濾器,我有以下兩個簡單的查詢:爲什麼AsEnumerable還對服務器
var result = dbContext.Customers.Where(c => c.Name == "Mostafa").ToList();
var result2 = dbContext.Customers.Where(c => c.Name == "Mostafa").AsEnumerable().ToList();
當我運行SQL事件探查器
,我發現生成的SQL兩個查詢的查詢都是一樣的! 問題是爲什麼在第二個查詢,雖然我使用asEnumerable,執行服務器端的過濾?
更新:改變所述第二查詢時是這樣 濾波塗布於存儲器,而不是服務器:
var result2 = dbContext.Customers.AsEnumerable().Where(c => c.Name == "Mostafa").ToList();
由於@Willem範Onsem
不應該在'Where(..)'之前使用'AsEnumerable()'嗎? –
請解釋您爲什麼認爲這兩條語句應該生成不同的SQL語句。 –
謝謝@WillemVanOnsem,您的解決方案可以運行。 –