Kamis, 16 September 2010

Penggunaan LINQ Untuk Group dan Count Elemen Data

misalkan kita memiliki koleksi data dalam sebuah file yang isinya lebih kurang seperti berikut ini:
001
002
003
004
005



001
001


kita misalkan nama filenya adalah Angka.Txt.

nah untuk mendapatkan jumlah kemunculan dari masing-masing data yang ada di atas, dapat ditempuh dengan menggunakan beberapa pendekatan, salah satu pendekatan yang bisa ditempuh adalah dengan menggunakan LINQ yang merupakan salah satu fitur yang dapat kita manfaatkan sejak versi VB 9.0.

LINQ (Language Integrated Query) adalah query yang terintegrasi ke dalam bahasa pemrograman VB untuk memudahkan kita melakukan query terhadap sebuah koleksi data, salah satunya seperti pada contoh yang digunakan di atas.

berikut ini cara penyelesaian yang dilakukan:
1. Buat sebuah Project. kali ini yang digunakan adalah sebuah project yang berbasis Console Application. berikan nama project sesuai dengan keinginan anda.
2. ketik code berikut ini:
Imports System.IO

Module Module1

    Sub Main()
        Dim content = File.ReadAllLines("Angka.Txt")
        Dim dup = From el In content _
                  Group el By el Into e = Count() _
                  Order By e Descending _
                  Select el, e
        For Each item In dup
            Console.WriteLine(String.Format(“{0} = {1}”, item.el, item.e)
        Next
    End Sub

End Module

3. Run dan lihat hasil yang diperoleh ;-)

Penjelasan:
LINQ pada code di atas terdapat pada potongan code berikut:
Dim dup = From el In content _
                  Group el By el Into e = Count() _
                  Order By e Descending _
                  Select el, e
pada potongan code tsb, compiler diminta untuk men-group-kan data yang ada berdasarkan elemen-elemen yang ada di dalam koleksi data yang dibaca, dan kemudian dari hasil grouping tsb, hitung jumlah elemennya masing-masing, kemudian urutkan berdasarkan jumlah elemen data secara descending.

nah, jika diamati dengan seksama, apa sebenarnya yang terjadi dengan code di atas ?
ya, code tsb (red. Query di atas) memberikan perintah ke compiler dengan memberitahukan ke compiler apa yang diinginkan oleh code tsb, tapi code tsb tidak memberitahukan bagaimana cara mendapatkan output yang diinginkan. ini yang disebut dengan paradigma “Declarative Style”, dimana programmer cukup menuliskan code yang menerangkan “apa yang harus dikerjakan oleh compiler, bukan memberitahukan ke compiler bagaimana mengerjakan pekerjaan tsb (red. Imperative Style), untuk ururan bagaimana, serahkan ke compiler untuk mencari cara terbaik yang dimiliki oleh kemampuan compiler yang bersangkutan”.

berikut contoh tampilan output program yang dihasilkan:
Output

Rgds
Adi

Tidak ada komentar: