Func<TObject, bool> delegált
Expression<Func<TObject, bool>> kifejezések
Az Expression a fordítás után delegálttá válik, mielőtt futtathatnánk. Mint mit
Expression<Func<int, bool>> ex = x=>x < 100;
Func<int, bool> func = ex. Compile();
Ezután hívhatod a func-t:
func(5) //-true
func(200) //- hamisat ad
Az kifejezések nem hívhatók közvetlenül.
Eset:A helytelen lekérdezési kód teljes táblázatlekérdezést eredményez az adatbázisban。
A hibakód a következő:
A Func típusú változót argumentumként adjuk át a Count metódusnak,Az EF lekérdezi az összes adatot az egész táblában, és szűri azokat a memóriából。 A generált SQL utasítás így néz ki:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Végrehajtott DbCommand (8ms) [paraméter=[], CommandType='Text', CommandTimeout='30'] SELECT [c]. [id], [c]. [client_type], [c]. [állapot], [c]. [bérlő] FROM [táblázat] AS [c] A helyes kód a következő:
A helyes írás hozzáad egy hol feltételt az adatbázisból, majd közvetlenül visszaadja a szám értékét。 A generált SQL utasítás így néz ki:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Végrehajtott DbCommand (4ms) [paraméter=[], CommandType='Text', CommandTimeout='30'] SELECT COUNT(*) FROM [táblázat] AS [c] AHOL [c]. [client_type] = 1
A Func delegált hívások használata a következőkSystem.Linq.EnumerableSzámolás alább
Az Expression<Func<T, bool>> kifejezésSystem.Linq.QueryableSzámolás alább
(Vége)
|