Func<TObject, bool> delege
Expression<Func<TObject, bool>> ifadelerdir
Expression, derlemeden sonra bir delege olur ve çalıştırılamıyor. Ne gibi?
Expression<Func<int, bool>> ex = x=>x < 100;
Func<int, bool> func = örneğin. Derle();
Sonra func diyebilirsiniz:
func(5) //-true döner
func(200) //- yanlış döndürür
İfadeler doğrudan çağrılamaz.
Kap:Yanlış sorgu kodu, veritabanında tam bir tablo sorgusuna neden olur。
Hata kodu şöyledir:
Func tipindeki bir değişkeni argüman olarak Count yöntemine aktarın,EF, tüm tablodaki tüm verileri sorgular ve bunları bellekten filtreler。 Oluşturulan SQL ifadesi şöyle görünüyor:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Yürütüldü DbCommand (8ms) [Parametreler=[], CommandType='Metin', CommandTimeout='30'] [c] SEÇ. [id], [c]. [client_type], [c]. [durum], [c]. [kiracı] [tablo] AS [c] DENİŞTİRİSİ Doğru kod şöyledir:
Doğru yazım, veritabanından bir where koşulu ekler ve sonra sayımın değerini doğrudan döndürür。 Oluşturulan SQL ifadesi şöyle görünüyor:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Çalıştırılan DbCommand (4ms) [Parametreler=[], CommandType='Metin', Komut Zamanaşımı='30'] SEÇ SAYISI(*) [tablo] AS [c] DENİŞTİRİSİ BURADA [c]. [client_type] = 1
Func delege çağrılarını kullanmak şunlardır:System.Linq.EnumerableAşağıda sayın
Expression<Func<T ile çağrılan ifade, bool>>System.Linq.QueryableAşağıda sayın
(Son)
|