Rumah >pembangunan bahagian belakang >C++ >IQueryable vs IEnumerable: Bilakah menggunakan yang untuk prestasi Linq yang optimum?
iquerable dan iEnumerable
dan IQueryable<T>
ketika bekerja dengan koleksi. Memahami perbezaan mereka adalah penting untuk menulis pertanyaan LINQ yang cekap. IEnumerable<T>
sifat yang dikongsi: pelaksanaan tertunda
kedua -dua dan IQueryable<T>
menggunakan pelaksanaan tertunda. Ini bermakna pertanyaan tidak dilaksanakan sehingga hasilnya sebenarnya diperlukan, meningkatkan kecekapan. IEnumerable<T>
Perbezaan utama: Interaksi Pangkalan Data
Perbezaan teras terletak pada konteks pelaksanaannya. Bekerja dengan Linq-to-Database (seperti LINQ-ke-SQL atau Rangka Kerja Entiti), yang membolehkan penambahbaikan pertanyaan dalam pangkalan data itu sendiri. Ini meningkatkan prestasi dengan meminimumkan data yang dipindahkan ke memori. IQueryable<T>
menggunakan linq-to-objects. Ini bermakna keseluruhan dataset yang sepadan dengan pertanyaan awal dimuatkan ke dalam memori sebelum pemprosesan selanjutnya. IEnumerable<T>
bila menggunakan iquerable
bila: IQueryable<T>
bila menggunakan iEnumerable
apabila: IEnumerable<T>
ToList()
ForEach()
<code class="language-csharp">var goldCustomers = db.Customers .Where(c => c.City == "<city>") .Skip(pageNumber * pageSize) .Take(pageSize);</code>
dengan IQueryable<T>
, Skip
dan Take
dilaksanakan dalam pangkalan data, mengambil hanya halaman yang diperlukan. Menggunakan IEnumerable<T>
, semua pelanggan dari bandar yang ditentukan akan dimuatkan ke dalam memori terlebih dahulu, menghasilkan kecekapan yang jauh lebih rendah. Oleh itu, IQueryable<T>
adalah pilihan pilihan untuk senario yang melibatkan dataset besar dan paging.
Atas ialah kandungan terperinci IQueryable vs IEnumerable: Bilakah menggunakan yang untuk prestasi Linq yang optimum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!