Article

Search

Fitur LINQ Query Di C#

User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive
 

 Query merupakan ekspresi yang dilakukan untuk mengambil data dari sumber data. Query biasanya diekspresikan menggunakan bahasa query. Berbagai bahasa telah dikembangkan dari waktu ke waktu untuk berbagai jenis sumber data, misalnya SQL untuk database relational dan XQuery untuk XML.

Oleh karena itu, developer harus mempelajari bahasa query baru untuk setiap jenis sumber data atau format data yang harus didukung. LINQ menyederhanakan situasi ini dengan menawarkan model yang konsisten untuk bekerja dengan data di berbagai jenis sumber data dan format. Dalam query LINQ, pengkodingan dilakukan memanfaatkan objek. Pola pengkodingan dasar yang digunakan sama dengan pola yang digunakan di dalam dokumen XML, database SQL, dataset ADO.NET, .NET Collections, dan format yang lain yang menyediakan LINQ.

 

Terdapat 3 bagian dari operasi query :

1.   Tentukan sumber data

2.   Buat query

3.   Jalankan query

Contoh berikut ini menampilkan bagaimana ketiga operasi query digunakan dalam source code. Contoh ini akan menggunakan array integer sebagai data source.

Berikut ilustrasi yang menunjukkan bagaimana operasi query dijalankan. Di LINQ, eksekusi query berbeda dengan query itu sendiri, dengan kata lain saat membuat variabel query, data belum tentu langsung diambil.

 

Pada contoh sebelumnya diatas, karena data source adalah sebuah array, secara implisit mendukung interface IEnumerable<T>. ini artinya array tersebut dapat di query menggunakan LINQ. Setiap query dijalankan dalam statement foreach, dan foreach mengharuskan array menggunakan IEnumerable atau IEnumerable<T>. Tipe yang mendukung IEnumerable<T> atau interface turunan seperti generic IQueryable<T> disebut queryable type.

Queryable type tidak membutuhkan perubahan atau treatment khusus untuk dapat digunakan sebagai data source LINQ, jika data source tidak berada di memory sebagai queryable type, LINQ harus mewakilinya.

Dengan LINQ ke SQL, pertama sekali harus membuat pemetaan objek relasional pada waktu desain, baik secara manual maupun menggunakan LINQ to SQL tools pada visual studio. Anda menuliskan query pada objek, dan pada saat menjalankannya, LINQ to SQL akan menangani komunikasi dengan database. Berdasarkan contoh berikut, Customers merepresentasikan tabel tertentu pada database, dan jenis hasil query IQueryable<T>, merupakan turunan dari IEnumerable<T>.

Query menentukan informasi seperti apa yang diambil dari data source. Query juga bisa menentukan bagaimana informasi diurutkan, dikelompokkan. Query akan disimpan di variabel query dan diinisialisasikan dengan query expression.

Query pada contoh sebelumnya mengembalikan semua bilangan genap dari array integer. Query expression mengandung 3 clause, yaitu : from, where, dan select.  Clause from menentukan data source, clause where berfungsi menerapkan filter, dan clause select menentukan jenis elemen yang dikembalikan. Seperti yang dinyatakan sebelumnya, variabel query itu sendiri hanya menyimpan perintah query. Query yang sebenarnya dijalankan akan ditunda sampai variabel query diulangi kembali dalam statement foreach. Konsep ini disebut sebagai deferred execution dan didemonstrasikan sebagai contoh berikut:

Statement foreach juga merupakan tempat hasil query diambil. Misalnya: pada query sebelumnya, variabel iterasi num menampung setiap nilai (satu per satu) dalam urutan yang dikembalikan. Karena variabel query tidak pernah menampung hasil query, anda dapat menjalankannya sesering mungkin. Misalnya, anda memiliki database yang diperbaharui terus-menerus oleh aplikasi terpisah. Dalam aplikasi anda, anda bisa membuat satu query yang mengambil data terbaru, dan anda bisa melakukannya berulang kali pada beberapa interval untuk mengambil query hasil yang berbeda setiap waktu.

 

Query yang melakukan fungsi agregasi pada berbagai elemen sumber harus terlebih dahulu beralih pada elemen tersebut. Contoh query tersebut adalah COUNT, MAX, AVERAGE, dan FIRST. Ini dijalankan tanpa statement foreach eksplisit karena query itu sendiri harus menggunakan foreach untuk mengembalikan hasil. Perhatikan juga bahwa tipe query ini mengembalikan nilai tunggal, bukan koleksi IEnumerable. Berikut query yang mengembalikan hitungan angka genap dalam array.

Untuk memaksa segera menjalankan query dan menyimpan hasilnya, anda bisa menggunakan metode ToList atau ToArray.

 

Informasi & Pendaftaran

  • Jl. Jend. A.H. Nasution Komplek Metrolink Business Park Blok B:6-7-8 (Sebelah Asrama Haji), Medan
    Jl. Mangkubumi No.15-G (di Belakang Toko Buah Berastagi Jl. Wajir), Medan
  • (061) 786 2188 / 785 2199 (A.H. Nasution)    |    (061) 456 6789 / 456 5938 (Mangkubumi)   |   0851 0700 2113 (Hp)
  • cs@wi-learning.ac.id