Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 35720|Jawab: 2

[Sumber] Perbedaan antara Expression<Func<T, bool>> dan Func<T, bool> di EF

[Salin tautan]
Diposting pada 26/09/2021 09.21.21 | | | |
Func<TObject, bool> adalah delegasi

Expression<Func<TObject, bool>> adalah ekspresi

Ekspresi akan menjadi delegasi setelah kompilasi sebelum dapat dijalankan. Seperti apa

Ekspresi<Func<int, bool>> ex = x=>x < 100;

Func<int, bool> func = ex. Kompilasi();

Kemudian Anda dapat memanggil func:

func(5) //-mengembalikan true

func(200) //- mengembalikan false

Ekspresi tidak dapat dipanggil secara langsung.

Perkara:Kode kueri yang salah menyebabkan kueri tabel lengkap database

Kode kesalahannya adalah sebagai berikut:

Teruskan variabel jenis Func sebagai argumen ke metode Count,EF mengkueri semua data di seluruh tabel dan memfilternya dari memori。 Pernyataan SQL yang dihasilkan terlihat seperti ini:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Menjalankan DbCommand (8ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      PILIH [c]. [id], [c]. [client_type], [c]. [status], [c]. [penyewa]
      DARI [tabel] SEBAGAI [c]
Kode yang benar adalah sebagai berikut:

Penulisan yang benar menambahkan kondisi where dari database dan kemudian mengembalikan nilai hitungan secara langsung。 Pernyataan SQL yang dihasilkan terlihat seperti ini:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Menjalankan DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      PILIH COUNT(*)
      DARI [tabel] SEBAGAI [c]
      DI MANA [c]. [client_type] = 1


EF Core Series 4 melihat pernyataan SQL yang dihasilkan
https://www.itsvse.com/thread-9564-1-1.html
ef menampilkan pernyataan SQL yang dihasilkan
https://www.itsvse.com/thread-3813-1-1.html

Menggunakan panggilan delegasi Func adalahSistem.Linq.EnumerableHitung di bawah ini

Ekspresi yang disebut dengan Expression<Func<T, bool>> adalahSystem.Linq.QueryableHitung di bawah ini



(Akhir)





Mantan:[Praktek] Buat versi hijau tanpa instalasi dari Java JDK Windows
Depan:Java mengirimkan kode verifikasi SMS melalui Alibaba Cloud SMS SDK
Diposting pada 26/09/2021 16.19.52 |
arif
Diposting pada 26/09/2021 17.31.25 |
Ya, saya di sini untuk belajar lagi ...
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com