iquerable vs iEnumerable
dan IQueryable<T>
memberi kesan yang signifikan kepada prestasi dan kecekapan. Kedua -duanya mewakili urutan data, tetapi pelaksanaannya berbeza secara dramatik. Panduan ini menjelaskan bila menggunakan setiap. IEnumerable<T>
Memahami Perbezaan Teras
pelaksanaan ditangguhkan IQueryable<T>
: pertanyaan tidak dilaksanakan sehingga hasilnya sebenarnya diperlukan. Ini mengoptimumkan penggunaan sumber dan mempercepat pengambilan data.
sebaliknya,
Jalankan IEnumerable<T>
Segera IEnumerable<T>
, memuatkan semua data yang sepadan ke dalam ingatan. Ini sesuai untuk dataset yang lebih kecil tetapi boleh tidak cekap untuk pangkalan data yang besar.
Pilihan optimum bergantung pada keperluan aplikasi anda:
Gunakan
Bila: IQueryable<T>
anda mengakses pangkalan data jauh dan ingin meminimumkan pemindahan data.
IEnumerable<T>
Data anda berada dalam ingatan (mis., Senarai, array).
IQueryable<T>
Contoh ilustrasi Pertimbangkan coretan kod ini:
Dalam contoh
, pertanyaan pangkalan data hanya dilaksanakan apabila anda melangkah melalui<code class="language-csharp">// IQueryable<Customer> - Deferred Execution IQueryable<Customer> customers = from c in db.Customers where c.City == "New York" select c;</code>
<code class="language-csharp">// IEnumerable<Customer> - Immediate Execution IEnumerable<Customer> customers = from c in db.Customers.ToList() // Loads all customers into memory where c.City == "New York" select c;</code>
semua IQueryable<T>
pelanggan dari pangkalan data ke dalam memori sebelum penapisan, berpotensi menyebabkan kemunculan prestasi dengan dataset yang besar. Panggilan customers
Panggilan melaksanakan segera. IEnumerable<T>
Atas ialah kandungan terperinci Iqueryable vs. iEnumerable: Bilakah saya harus menggunakan yang mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!