Apa itu Kueri Terintegrasi Bahasa?

Kueri terintegrasi bahasa (LINQ) menyediakan kemampuan untuk mengintegrasikan sintaks kueri deklaratif dengan mulus ke dalam bahasa imperatif, terutama C# dan VB.NET. Pengembangan LINQ memecahkan masalah pengembang yang bekerja di lingkungan berorientasi objek yang dihadapi saat melakukan kueri. Itu diperkenalkan sebagai bagian dari Microsoft® .NET Framework versi 3.5 pada November 2007, dan dalam nama kode Visual Studio® “Orcas.”

Sebelum pembuatan kueri terintegrasi bahasa, bahasa .NET tidak memiliki cara asli untuk menanyakan basis data relasional atau dokumen XML. Pengembang yang menulis dalam bahasa ini harus menyematkan SQL atau XQuery masing-masing sebagai string, dan secara manual memetakan data yang dihasilkan ke objek .NET. String kueri dan pemetaan yang disematkan tidak dapat divalidasi oleh kompiler .NET, memungkinkan kesalahan potensial ditemukan pada waktu proses.

Masalah lain yang dihadapi pengembang sebelum kueri terintegrasi bahasa adalah bahwa bahasa .NET hanya memiliki sintaks berorientasi objek ke kumpulan kueri objek .NET. Biasanya, pengembang akan mengulangi seluruh koleksi sumber, membangun koleksi hasil baru berdasarkan kriteria pencarian. Pengembang juga dapat mengubah data sambil membangun koleksi hasil. Pendekatan ini tidak praktis; kueri pemilihan sederhana yang ditulis dalam C# atau VB akan membutuhkan setidaknya lima baris kode, sedangkan kueri yang sama akan membutuhkan satu baris kode dalam bahasa kueri.

Tantangan query dalam lingkungan berorientasi objek memberi Microsoft dorongan untuk membuat LINQ. LINQ menyediakan sintaks kueri yang mengingatkan pada SQL untuk digunakan sejalan dengan C# atau VB, lengkap dengan pemeriksaan tipe statis. Saat menanyakan koleksi .NET, alih-alih menggunakan loop bersarang, pengembang dapat menggunakan sintaks LINQ untuk memilih item dan mengubah data. Di antara keuntungan lainnya, ini menghasilkan lebih sedikit baris kode dibandingkan dengan sintaks berorientasi objek murni.

Saat mengakses sumber data eksternal, LINQ dan komponen pendukung menghilangkan kebutuhan akan bahasa kueri yang disematkan dan pemetaan data dalam bahasa .NET itu sendiri. Untuk melakukan pemetaan data, LINQ bergantung pada komponen yang disebut penyedia LINQ. LINQ-to-Objects adalah penyedia stok yang memungkinkan LINQ mengakses koleksi .NET. Demikian pula, ada penyedia untuk mengakses database relasional dan dokumen XML. Sebagian besar penyedia ini adalah komponen pihak ketiga yang tidak disertakan dalam .NET Framework. Terlepas dari penyedia yang digunakan, semua kueri menggunakan sintaks LINQ yang sama.

Antara sintaks kueri terintegrasi bahasa dan penyedia adalah perpustakaan operator kueri yang ditambahkan ke .NET Framework sebagai bagian dari fasilitas LINQ. Operator-operator ini melakukan tugas-tugas seperti penyaringan, pemesanan, operasi teori himpunan, dan agregasi. Karena operator ini adalah bagian dari .NET Framework, mereka juga dapat digunakan tanpa LINQ jika pengembang menginginkannya.