Contoh LINQ di VB.NET

LINQ yang merupakan kepanjangan dari Language Integrated Query berguna untuk query sebuah collections atau aray di Visual Basic.  Dan agar lebih familiar sintaks query LINQ dimiripkan dengan query database.   Meski powerfull, akan tetapi LINQ tidak di sarankan untuk query yang benar-benar kompleks.

Untuk menggunakannya LINQ anda harus terlebih dahulu mengimport System.Linq ke proyek VB.NET anda.  Contoh LINQ di dokumentasi Microsoft mungkin susah dipahami karena menggunakan object collections, karena itulah penulis memberi contoh sederhana dengan DataTable yang paling sering penggunaannya.

Dalam contoh ini penulis menggunakan 2 buah tabel, sebut saja namanya mytable1 dan mytable2 dengan struktur sebagai berikut:

mytable1

idmytable1 nama tipe
1 dewi cewek bahenol
2 tamara bencong selebor
3 andri cewek genit
4 lusi cewek bahenol
5 lusiana cewek bahenol

mytable2

idmytable2 idmytable1 hobi
1 1 memasak
2 2 menyanyi
3 3 gosip
4 1 berenang

Dan berikut adalah script pembuatan table:


 Dim mytable1 As New DataTable
        Dim clm1 As DataColumn = mytable1.Columns.Add
        clm1.DataType = Type.GetType("System.Int32")
        clm1.ColumnName = "idmytable1"
        Dim clm2 As DataColumn = mytable1.Columns.Add
        clm2.ColumnName = "nama"
        clm2.DataType = Type.GetType("System.String")
        Dim clm3 As DataColumn = mytable1.Columns.Add
        clm3.ColumnName = "tipe"
        clm3.DataType = Type.GetType("System.String")

        mytable1.Rows.Add(1, "dewi", "cewek bahenol")
        mytable1.Rows.Add(2, "tamara", "bencong selebor")
        mytable1.Rows.Add(3, "andri", "cewek genit")
        mytable1.Rows.Add(4, "lusi", "cewek bahenol")

        Dim mytable2 As New DataTable
        Dim clm21 As DataColumn = mytable2.Columns.Add
        clm21.DataType = Type.GetType("System.Int32")
        clm21.ColumnName = "idmytable2"
        Dim clm22 As DataColumn = mytable2.Columns.Add
        clm22.DataType = Type.GetType("System.Int32")
        clm22.ColumnName = "idmytable1"
        Dim clm23 As DataColumn = mytable2.Columns.Add
        clm23.DataType = Type.GetType("System.String")
        clm23.ColumnName = "hobi"

Kemudian kita tambahkan data seperti berikut:


 mytable1.Rows.Add(1, "dewi", "cewek bahenol")
 mytable1.Rows.Add(2, "tamara", "bencong selebor")
 mytable1.Rows.Add(3, "andri", "cewek genit")
 mytable1.Rows.Add(4, "lusi", "cewek bahenol")
 mytable1.Rows.Add(5, "lusiana", "cewek bahenol")

 mytable2.Rows.Add(1, 1, "memasak")
 mytable2.Rows.Add(2, 3, "menyanyi")
 mytable2.Rows.Add(3, 4, "gosip")
 mytable2.Rows.Add(4, 4, "berenang")

Untuk mengambil data tipe “cewek bahenol”



Dim query = From y As DataRow In mytable1.Rows
            Where y.Item("tipe") = "cewek bahenol"
            Select y.Item("nama")

 For Each k In query
 Console.WriteLine("Cewek bahenol as query=" & k)
 Next
'Hasilnya:
'Cewek bahenol as query=dewi
'Cewek bahenol as query=lusi
'Cewek bahenol as query=lusiana

Jika sebagai IEnumberable, hasil yang didapatkan adalah sama.


Dim queryenum = mytable1.AsEnumerable.Where(Function(p) p.Item("tipe") = "cewek bahenol").Select(Function(r) New With {.nama = r.Item("nama")})
For Each z In queryenum
Console.WriteLine("Cewek bahenol as enum=" & z.nama)
Next
'Hasil:
'Cewek bahenol as enum=dewi
'Cewek bahenol as enum=lusi
'Cewek bahenol as enum=lusiana

Sebagai array


 Dim c = mytable1.AsEnumerable.Where(Function(p) p.Item("tipe") = "cewek genit").ToArray
 For Each m In c
Console.WriteLine("cewek genit array=" & m.Item("nama"))
Next
'Hasil:
'cewek genit array=andri

Mengambil baris pertama:


Dim q = (From y As DataRow In mytable1.Rows).FirstOrDefault
        Console.WriteLine("row 1=" & q.Item("nama"))
'Hasil:
'row 1=dewi

Join tabel dengan key “idmytable1”


  Dim query2 = From y As DataRow In mytable1.Rows
               Join x In mytable2.Rows
               On y("idmytable1") Equals x("idmytable1")
               Select nama = y("nama"), tipe = y("tipe")

For Each k In query2
 Console.WriteLine("join as query=" & k.nama & " " & k.tipe)
Next
'Hasil:
'join as query=dewi cewek bahenol
'join as query=andri cewek genit
'join as query=lusi cewek bahenol
'join as query=lusi cewek bahenol

Join tabel jika sebagai IEnumberable


Dim df = mytable1.AsEnumerable.Join(mytable2.AsEnumerable, Function(m) m.Item("idmytable1"), Function(y As DataRow) y.Item("idmytable1"), Function(a, b) New With {.nama = a.Item("nama"), .tipe = a.Item("tipe")})
For Each x In df
 Console.WriteLine("join as enum=" & x.nama & " " & x.tipe)
Next
'Hasil:
'join as enum=dewi cewek bahenol
'join as enum=andri cewek genit
'join as enum=lusi cewek bahenol
'join as enum=lusi cewek bahenol

anasmbahdien

Seorang programmer yang menguasai bahasa pemograman Delphi, VB.NET, PHP dan Android. Untuk hasil karya kunjungi mogotekno.com

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *