Mengenal LINQ Pada Framework Microsoft.NET (dan Class List)

dokumen-dokumen yang mirip
Dasar pengenalan class dan contoh

Pemograman Berorientasi Objek

Pengenalan dan contoh Access Identifier

APLIKASI MENGELOLA DATA ACCESS LOG MENGGUNAKAN C# Melihat LOG berdasar Hari, Jam, dan URL Terbanyak diakses

MINGGU II : DASAR C# Tujuan Pembelajaran. Materi

BAB 8 Argumen dari Command-line

BAB 8 Argumen dari Command-line

MEMBUAT KELAS SENDIRI. Dewi Sartika, M.Kom

LISTING PROGRAM. public static BigInteger gcd(biginteger m, BigInteger n){ BigInteger r = m % n; while (r!= 0){ return gcd(n,r); } return n; }

Pemrograman Berorientasi. Class dan Obyek 2

Modul Praktikum 4 Pemograman Berorientasi Objek

IT210 Pemrograman Visual. Ramos Somya

2 TIPE DATA DAN VARIABEL

BAB VI ARRAY Mendeklarasikan Variabel Array int[ ] bilangan; int bilangan[ ]; Mendefinisikan Array Bilangan = new int[5]; Latihan 21. ArrSatu.

Gambar 1. Single Linked List

PEMAHAMAN DASAR DASAR JAVA

BAB IV IMPLEMENTASI DAN PENGUJIAN

MODUL III ARRAYLIST TUGAS PENDAHULUAN

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

Pemograman Berorientasi Objek. Week 4 Initialization dan Instance dalam Kelas

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

C# dasar class di dalam class

BAB II VARIABEL DAN TIPE DATA

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

Gambar 1. Single Linked List

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

Modul ini mengenalkan Anda konsep dasar mengenai Java generic types.

Gambar 1. Single Linked List

A. TEORI ARRAY 1 DIMENSI

Mei 2006 Oleh : Feri Djuandi.

Array Sebagai Parameter Method

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

BAHASA PEMROGRAMAN JAVA

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello {

Politeknik Elektronika Negeri Surabaya

Pertemuan 4 Array pada Java

Modul 2. [access specifier] [tipe data] [nama variabel];

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Array Multidimensi. Pemrograman Dasar. Java

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

Eky Pratama Halim [TUTORIAL UNIT TESTING WORLD MART DENGAN VISUAL STUDIO 2010] Langkah-langkah melakukan UNIT TESTING dengan Visual Studio 2010

Pemograman Berorientasi Objek. Week 6 Relasi Antar Kelas

IT210 Pemrograman Visual. Ramos Somya

PRAKTIKUM 6 EXCEPTION

MODUL 3 ARRAY. Pemograman Berorientasi Objek

BAB IV PERANCANGAN. IV.1 Evaluasi Usulan untuk Perancangan Iteratif

Dasar Pemrograman Java

MINGGU VII : RELASI ANTAR KELAS

Parent dan Child di Java

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

PRAKTIKUM 2 PEMROGRAMAN BERORIENTASI OBJEK

Cara Membaca File Text di JAVA

Metode Binnary Searching di Java Console

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

Percabangan & Perulangan

BAB IV HASIL PENELITIAN DAN PENERAPAN

MODUL 1 PENGENALAN OOP

SISTEM TERDISTRIBUSI PERTEMUAN IV ASP.NET WEB SERVICE (1)

Membuat Webservice Pada Visual Studio 2012 (C#.NET ver.4.5)

A. TEORI ARRAY 1 DIMENSI

PERCOBAAN 6 EXCEPTION

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

Obyektif : KONTROL ALUR PROGRAM

IF PEMROGRAMAN LANJUT EXCEPTION. Oleh : Andri Heryandi, M.T.

1.1 Mengenal Visual Basic (VB) 1.2 Mengenal Integrated Development Environment (IDE) VB 6

Pengenalan Table Pada Lua

Pemrograman Database Java

Var-arg Cornelius Mellino / Cornelius Koo JavaSchool of Object Technology

Jobsheet 09. Overloading and Overriding Method

IF PEMROGRAMAN LANJUT GENERIC. Oleh : Andri Heryandi, M.T.

Method. Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle

Modul Tutorial C# 2 DASAR PEMROGRAMAN C# : STATEMENT DAN OPERATOR ENRICO BUDIANTO MICROSOFT INNOVATION CENTER UNIVERSITAS INDONESIA

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Vigenere Minimum-Prime Key-Adding Cipher

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

GENERICS. Yuliana Setiowati. Politeknik Elektronika Negeri Surabaya. Topik

PERTEMUAN I PENGENALAN JAVA

IKG2I4 / Software Project I

Exception adalah penanda bahwa kondisi/kejadian yang tidak diinginkan telah terjadi pada program kita. Ada 2 jenis exception (+1 Error):

Array. Adharul Muttaqin Universitas Brawijaya Malang. Array

Percobaan 6 Exception

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Bahasa Pemrograman :: Dasar Pemrograman Java

Method / Fungsi / Sub Program

Modul 4: Lebih Dalam lagi tentang Class, Objek dan Method

XAMARIN ANDROID : Membangun. Aplikasi Mobile Dengan GridView

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

Bab 8. Dasar-Dasar OOP

Beberapa Contoh Penggunaan Array

IF PEMROGRAMAN LANJUT ARRAY. Oleh : Andri Heryandi, M.T.

Bahasa Pemrograman 2.

MINGGU IX : ARRAY DAN GENERICS

Belajar ArrayList di Java

Badiyanto, S.Kom., M.Kom. PBO java

Transkripsi:

Mengenal LINQ Pada Framework Microsoft.NET (dan Class List) Oleh: David Setyo LINQ atau Language INtegrated Query merupakan sebuah komponen pada platform Microsoft.NET. Dengan adanya LINQ, bahasa pemrograman yang digunakan pada framework Microsoft.NET memiliki kemampuan native query terhadap data. LINQ sendiri sudah mulai ditambahkan pada framework.net sejak versi 3.0 dan VB 9.0. Seiring dengan meningkatnya kompleksitas dalam komputasi dan manipulasi data, kebutuhan... LINQ atau Language INtegrated Query merupakan sebuah komponen pada platform Microsoft.NET. Dengan adanya LINQ, bahasa pemrograman yang digunakan pada framework Microsoft.NET memiliki kemampuan native query terhadap data. LINQ sendiri sudah mulai ditambahkan pada framework.net sejak versi 3.0 dan VB 9.0. Seiring dengan meningkatnya kompleksitas dalam komputasi dan manipulasi data, kebutuhan akan melakukan native query di dalam bahasa pemrograman pun meningkat. Pada umumnya kita mengenal istilah query ketika bermain-main dengan database, SQL, bahasa tersebut biasanya identik dengan istilah query. Namun perlu diketahui bahwa query sendiri adalah suatu metode pengambilan data terlepas dari sumbernya yang bisa berupa database, file teks, atau data di dalam memory. Lalu mengapa LINQ menjadi hal yang menarik bahkan mungkin sebagian programmer.net tidak terpisahkan dari LINQ? Jawabnya adalah fleksibilitas dalam manipulasi data. Bayangkan apabila variable array yang biasa Anda gunakan, diperlakukan seperti halnya tabel pada database, pengambilan data dapat dilakukan menggunakan query yang dapat dikembangkan sesuai dengan spesifikasi yang Anda inginkan, meminimalkan baris kode dalam melakukan sorting data serta menghindari dilakukannya iterasi atau looping ketika hendak mencari suatu data spesifik. Kedengarannya luar biasa bukan? Namun Anda tidak akan percaya sebelum melihat dan mencobanya. Sebelum kita melihat contoh penerapannya di dalam kode program, perlu juga diketahui bahwa LINQ, layaknya query SQL, mengenal operasi standar seperti select, where, selectmany, distinct, min/max/average, sum, join, dan lain-lain. Lalu Anda juga perlu mengetahui class List<T> pada framework.net. Class List<T> merupakan array, namun berbeda dengan array tradisional yang panjangnya tidak dapat berubah secara dinamis, List<T> memiliki panjang yang dinamis sesuai dengan data yang ada di dalamnya. Class List<T> berada di dalam namespace System.Collections.Generic. Ketika mendeklarasikan instance List, Anda harus mendefinisikan tipenya sebab List dianggap sebagai tipe generic. Sebagai contoh, ketika Anda hendak membuat List yang berisi nilai integer, maka bentuk deklarasinya adalah sebagai berikut: List<int> listinteger = new List<int>(); Perhatikan bahwa "T" pada List<T> menunjukkan tipe data dari anggota atau element yang

terkandung di dalam List. Dengan kata lain, Anda juga dapat membuat List dengan tipe string dengan cara yang sama: List<string> liststring = new List<string>(); Hanya sebatas tipe data primitif? Tidak. Contoh berikut adalah List yang berisi class yang penulis buat sendiri: public class Buah private string namabuah = ""; private string warnabuah = ""; public Buah(string namabuah = "", string warnabuah = "") this.namabuah = namabuah; this.warnabuah = warnabuah; public string Nama get return namabuah; set namabuah = value; public string Warna get return warnabuah; set warnabuah = value; List<Buah> listbuah = new List<Buah>(); Lalu pertanyaan selanjutnya adalah, bagaimana cara mengisi suatu List dengan element-element yang Anda kehendaki? Secara umum, untuk mengisi atau menambahkan element pada List adalah dengan memanggil method List<T>.Add(item), di mana tipe data item adalah T. Contoh di bawah ini akan memperjelas penggunaan method List<T>.Add(item). Untuk mengisi List<int>, tentu saja element yang dapat dimasukkan adalah berupa integer. Maka kode yang digunakan adalah: List<int> listinteger = new List<int>(); //Menambahkan nilai integer ke dalam listinteger listinteger.add(20); listinteger.add(11); //Element yang ditambahkan bisa juga berupa variable lain int i = 8; listinteger.add(i); Lalu di atas saya memberi contoh class Buah yang saya buat sendiri. Saya juga menyatakan bahwa tipe data List bisa berupa class yang saya buat sendiri. Pada contoh class Buah, ketika Anda membuat listbuah, didefinisikan bahwa element atau anggota dari listbuah merupakan instance dari class Buah, oleh sebab itu listbuah hanya boleh diisi dengan variable yang merupakan instance dari

class Buah. Contohnya adalah sebagai berikut: listbuah.add(new Buah("Apel", "Merah")); listbuah.add(new Buah("Jeruk", "Oranye")); listbuah.add(new Buah("Anggur", "Ungu")); listbuah.add(new Buah("Semangka", "Hijau")); Seperti halnya sebuah array, tentu saja Anda juga seringkali perlu mengakses data yang disimpan di dalamnya. Apabila Anda memperlakukan List sebagaimana layaknya sebuah array konvensional, seringkali Anda perlu melakukan iterasi untuk mengakses element tertentu. Contoh iterasi untuk terhadap semua isi dari listbuah adalah sebagai berikut: foreach (Buah buah in listbuah) //Lakukan sesuatu terhadap variable "buah" //atau for (int i = 0; i < listbuah.count; i++) //Lakukan sesuatu terhadap "listbuah[i]" Pada kode di atas, List terlihat tidak ubahnya array konvensional. Tetapi tunggu sampai kita menggunakan LINQ untuk melakukan pengambilan data. Lihat contoh berikut: var urutanbuah = from p in listbuah orderby p.nama select p; Kode di atas akan mengisi variable sementara bernama urutanbuah, di mana isinya adalah element-element List listbuah yang telah diurutkan berdasarkan nama. Berikut adalah contoh lain untuk mengambil element-element buah dengan warna tertentu, misalnya ungu: List<Buah> seleksibuah = listbuah.where(p => p.warna.equals("ungu").tolist(); Pada kode di atas, semua element listbuah yang memiliki attribute "Warna" ungu akan diisikan ke dalam List baru bernama seleksibuah. Perhatikan juga bahwa tipe seleksibuah adalah Buah, sama dengan listbuah. Berikut adalah listing kode lengkap yang digunakan di dalam artikel ini: File: Program.cs using System; using System.Collections.Generic;

using System.Linq; using System.Text; namespace ContohLINQ class Program static void Main(string[] args) new Program(); Console.ReadLine(); private List<Buah> listbuah; public Program() listbuah = new List<Buah>(); Console.WriteLine("Buat daftar buah-buahan:"); Console.WriteLine("==================================="); BuatlistBuah(); UrutkanBuah(); UrutkanBuah(1); private void BuatlistBuah() Console.WriteLine("Buah: Apel; Warna: Merah"); listbuah.add(new Buah("Apel", "Merah")); Console.WriteLine("Buah: Jeruk; Warna: Oranye"); listbuah.add(new Buah("Jeruk", "Oranye")); Console.WriteLine("Buah: Anggur; Warna: Ungu"); listbuah.add(new Buah("Anggur", "Ungu")); Console.WriteLine("Buah: Semangka; Warna: Hijau"); listbuah.add(new Buah("Semangka", "Hijau")); Console.WriteLine("==================================="); /// <summary> /// Contoh Sorting dengan LINQ /// </summary> /// <param name="param">param = 0, urut berdasarkan nama buah. param = 1, urut berdasarkan warna buah</param> private void UrutkanBuah(int param = 0) if (param == 0) Console.WriteLine("Buah Diurutkan Berdasarkan Nama"); Console.WriteLine("===================================");

var urutanbuah = from p in listbuah orderby p.nama select p; buah.warna); foreach (Buah buah in urutanbuah.tolist()) Console.WriteLine("Nama: " + buah.nama + "; Warna: " + else if (param == 1) Console.WriteLine("Buah Diurutkan Berdasarkan Warna"); Console.WriteLine("==================================="); var urutanbuah = from p in listbuah orderby p.warna select p; foreach (Buah buah in urutanbuah.tolist()) Console.WriteLine("Nama: " + buah.nama + "; Warna: " + buah.warna); else throw new ArgumentException("Parameter tidak valid"); Console.WriteLine("===================================\n\n"); Console.WriteLine("Cari Buah Berwarna Ungu"); CariBuahBerdasarkanWarna("ungu"); private void CariBuahBerdasarkanWarna(string warna = "") if (!string.isnullorempty(warna)) List<Buah> seleksibuah = listbuah.where(p => p.warna.equals(warna, StringComparison.InvariantCultureIgnoreCase)).ToList(); if (seleksibuah.count > 0) foreach (Buah buah in seleksibuah) Console.WriteLine(buah.Nama); else

Console.WriteLine("Buah berwarna " + warna + " tidak ditemukan."); else throw new ArgumentException("Parameter tidak valid"); public class Buah private string namabuah = ""; private string warnabuah = ""; public Buah(string namabuah = "", string warnabuah = "") this.namabuah = namabuah; this.warnabuah = warnabuah; public string Nama get return namabuah; set namabuah = value; public string Warna get return warnabuah; set warnabuah = value; Setelah melihat contoh-contoh di atas, maka dapat disimpulkan bahwa LINQ memberikan fleksibilitas lebih dalam melakukan pemrograman. Class List<T> juga turut mendukung fleksibilitas LINQ dengan menyediakan tempat penampungan berupa array dinamis yang tipe datanya dapat disesuaikan dengan hasil query LINQ. Hal menarik lainnya adalah, selama ini banyak orang yang berpendapat bahwa query identik dengan database, namun artikel ini menceritakan tentang query dan tidak menggunakan database tertentu. Saya berharap artikel ini dapat bermanfaat bagi pembaca, terutama programmer.net yang belum pernah menggunakan LINQ dan ingin menggunakannya pada kesempatan mendatang. Jangan lupa juga, LINQ hanya tersedia pada framework.net 3.0 ke atas.

Tentang Penulis David Setyo