Konversi data hasil LINQ menjadi DataTable

Ketika menggunakan ADO, data hasil queri bisa kita olah lagi di datatable. Tapi bagaimana dengan data hasil dari LINQ? Ini menjadi masalah ketika aku ingin mengolah data hasil LINQ karena Data LINQ merupakan data bertipe enumarasi yang berbeda dengan dataset dan datatable. Salah satu cara untuk mengolah data LINQ adalah mengubah data hasil LINQ menjadi DataTable. Cara ini sangat membantu programer yang terbiasa menggunakan ADO.

'copyright(c) 2008 by Vimal Lakhera
'Converted into VB.net by Me
Function LINQToDataTable(Of T)(ByVal varlist As _
System.Collections.Generic.IEnumerable(Of T)) As DataTable
  Dim dtHasil As New DataTable()
  Dim pi() As System.Reflection.PropertyInfo = Nothing
  For Each rec As T In varlist
    If pi Is Nothing Then
      pi = (CType(rec.GetType(), Type)).GetProperties()
      For Each _pi As System.Reflection.PropertyInfo In pi
        Dim TipeKolom As Type = _pi.PropertyType
        If TipeKolom.IsGenericType AndAlso _
        (TipeKolom.GetGenericTypeDefinition() Is GetType(System.Nullable(Of ))) Then
            TipeKolom = TipeKolom.GetGenericArguments()(0)
        End If
        dtHasil.Columns.Add(New DataColumn(_pi.Name, TipeKolom))
      Next
    End If

    Dim dr As DataRow = dtHasil.NewRow()
    For Each _pi As System.Reflection.PropertyInfo In pi
      If _pi.GetValue(rec, Nothing) Is Nothing Then
        dr(_pi.Name) = DBNull.Value
      Else
        dr(_pi.Name) = _pi.GetValue(rec, Nothing)
      End If
    Next

    dtHasil.Rows.Add(dr)
  Next
  Return dtHasil
End Function

Contoh penggunaannya adalah sebagai berikut:

Dim hasil = From _modem In dt.MODEMs _
    Select New With {_modem.ID, _modem.PLAT}

Dim dta As DataTable = LINQToDataTable(hasil)

Kode aslinya menggunakan C# dapat dilihat disini

About Yuniar

Penulis sekarang lebih banyak bekerja menggunakan teknologi Microsoft .NET secara umum dan TIDAK lagi menggunakan aplikasi MapXtreme.net dari MapInfo. Karena itu mohon maaf, jika pertanyaan-pertanyaan mengenai MapXtreme sudah tidak bisa saya jawab lagi.

Posted on 15 Oktober 2009, in LINQ and tagged , , , . Bookmark the permalink. 3 Komentar.

  1. wuihh mantap nice tutor.., bro link pny u da gw ganti sesuai keinginan u boss…

  2. saya mau tanya buku yang menerangkan tentang LINQ to XML sudah ada apa blom?….klo ada apaan nama bukunya?….

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: