Cosa farà bene con un predicato?

c# dapper

Domanda

Se ho un metodo che restituisce un List of Dogs , Dapper converte il predicato Where in un SQL Dove? o prende prima tutti i cani e poi filtra la lista?

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

Risposta popolare

Dipende da cosa risolve il sovraccarico quando risolve il Where .

Se il risultato della chiamata a Query è un List<Dog> e si using System.Linq; direttiva, e l'argomento è un delegato, quindi il Where si risolverà nella versione LINQ-a-oggetti di Where . Quindi la query di selezione verrà eseguita sul server e quindi Where verrà eseguito sul client.

Se il risultato di Query è IQueryable<Dog> e l'argomento è Expression allora la risoluzione di sovraccarico sceglierà Where combina con la query esistente. Quando viene eseguita quella query, Where viene eseguita su qualsiasi lato i provider di query scelgono di eseguirlo, che di solito è il server.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow