Func<TObject, bool> on delegaatti
Expression<Func<TObject, bool>> ovat lausekkeita
Expressionista tulee delegaatti kokouksen jälkeen ennen kuin sitä voidaan käynnistää. Mitä esimerkiksi.
Lauseke<Func<int, bool>> ex = x=>x < 100;
Func<int, bool> func = esim. Compile();
Sitten voit kutsua func:
func(5) //-palauttaa tosi
func(200) //- palauttaa epätosi
Lausekkeita ei voi kutsua suoraan.
Tapaus:Väärä hakukoodi aiheuttaa koko taulukyselyn tietokannasta。
Virhekoodi on seuraava:
Välitetään Func-tyyppinen muuttuja argumenttina Count-metodiin,EF kysyy kaikki tiedot koko taulukosta ja suodattaa sen muistista。 Generoitu SQL-lause näyttää tältä:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Suoritettu DbCommand (8ms) [parametrit=[], CommandType='Teksti', CommandTimeout='30'] VALITSE [c]. [id], [c]. [client_type], [c]. [tila], [c]. [vuokralainen] LÄHTEESTÄ [taulukko] AS [c] Oikea koodi on seuraava:
Oikea kirjoitus lisää tietokannasta missä-ehdon ja palauttaa sitten suoraan laskennan arvon。 Generoitu SQL-lause näyttää tältä:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Suoritettu DbCommand (4ms) [parametrit=[], CommandType='Teksti', CommandTimeout='30'] VALITSE LUKUMÄÄRÄ(*) LÄHTEESTÄ [taulukko] AS [c] MISSÄ [c]. [client_type] = 1
Func-delegaattikutsujen käyttö onSystem.Linq.EnumerableLaske alla
Lauseke, jota kutsutaan Expression<Func<T, bool>> onSystem.Linq.QueryableLaske alla
(Loppu)
|