Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Implementasi LINQ ke Objek dari metode operator kueri standar dijalankan dengan salah satu dari dua cara utama: segera atau ditangguhkan. Operator kueri yang menggunakan eksekusi yang ditangguhkan juga dapat dibagi menjadi dua kategori: streaming dan non-streaming. Jika Anda tahu bagaimana operator kueri yang berbeda dijalankan, ini dapat membantu Anda memahami hasil yang Anda dapatkan dari kueri tertentu. Ini terutama berlaku jika sumber data berubah atau jika Anda membuat kueri di atas kueri lain. Topik ini mengklasifikasikan operator kueri standar sesuai dengan cara eksekusinya.
Tata Krama Eksekusi
Segera
Eksekusi langsung berarti bahwa sumber data dibaca dan operasi dilakukan pada titik dalam kode tempat kueri dideklarasikan. Semua operator kueri standar yang mengembalikan satu hasil, yang tidak dapat diteriterasi, dieksekusi segera.
Ditangguhkan
Eksekusi yang ditangguhkan berarti bahwa operasi tidak dilakukan pada titik dalam kode tempat kueri dideklarasikan. Operasi dilakukan hanya ketika variabel kueri dijumlahkan, misalnya dengan menggunakan pernyataan For Each. Ini berarti bahwa hasil menjalankan kueri bergantung pada konten sumber data saat kueri dijalankan daripada saat kueri ditentukan. Jika variabel kueri dijumlahkan beberapa kali, hasilnya mungkin berbeda setiap saat. Hampir semua operator kueri standar yang jenis pengembaliannya IEnumerable<T> atau IOrderedEnumerable<TElement> dijalankan dengan cara yang ditangguhkan.
Operator kueri yang menggunakan eksekusi yang ditangguhkan juga dapat diklasifikasikan sebagai streaming atau non-streaming.
Siaran Langsung
Operator streaming tidak perlu membaca semua data sumber sebelum menghasilkan elemen. Pada saat eksekusi, operator streaming melakukan operasinya pada setiap elemen sumber saat dibaca dan menghasilkan elemen jika sesuai. Operator streaming terus membaca elemen sumber hingga elemen hasil dapat diproduksi. Ini berarti bahwa lebih dari satu elemen sumber mungkin dibaca untuk menghasilkan satu elemen hasil.
Tidak melakukan streaming
Operator non-streaming harus membaca semua data sumber sebelum dapat menghasilkan elemen hasil. Operasi seperti pengurutan atau pengelompokan termasuk dalam kategori ini. Pada saat eksekusi, operator kueri non-streaming membaca semua data sumber, memasukkannya ke dalam struktur data, melakukan operasi, dan menghasilkan elemen yang dihasilkan.
Tabel Klasifikasi
Tabel berikut mengklasifikasikan setiap metode operator kueri standar sesuai dengan metode eksekusinya.
Nota
Jika operator ditandai dalam dua kolom, dua urutan input terlibat dalam operasi, dan setiap urutan dievaluasi secara berbeda. Dalam kasus ini, selalu urutan pertama dalam daftar parameter yang dievaluasi secara bertahap dan ditunda.