Liste in DataTable konvertieren

Wer aus welchem Grund auch immer einmal vor dem Problem steht eine Liste in ein DataTable konvertieren zu müssen, kann folgendes Code Snippet verwenden:

1: Public Function ConvertListToDataTable(objects As System.Collections.IList)

As DataTable Implements cwContracts.IConverter.ConvertListToDataTable

   2:     Dim dataTable As New DataTable

   3:  

   4:     If objects IsNot Nothing AndAlso objects.Count > 0 Then

   5:         'Erzeuge Spalten aus den Properties des Objekts

   6:         Dim objectProperties = objects(0).GetType.GetProperties()

   7:         For Each prop In objectProperties

   8:             Try

   9:                 dataTable.Columns.Add(prop.Name, prop.PropertyType)

  10:             Catch ex As NotSupportedException

  11:                 dataTable.Columns.Add(prop.Name)

  12:             End Try

  13:         Next

  14:  

  15:  

16: 'Erzeuge die DataRows und fülle die passenden Objektwerte in die

passenden Spalten

  17:         Dim newRow = dataTable.NewRow

  18:  

  19:         For Each item In objects

  20:             newRow = dataTable.NewRow()

  21:  

  22:             For Each prop In item.GetType.GetProperties()

  23:                 newRow(prop.Name) = prop.GetValue(item, Nothing)

  24:             Next

  25:  

  26:             dataTable.Rows.Add(newRow)

  27:         Next

  28:     End If

  29:  

  30:     Return dataTable

  31: End Function

Mit einem Converter könnt ihr das auch in C# Code konvertieren.

Beachtet, dass ihr das try-catch in Zeile 8-12 nur verwenden müsst, wenn in der Liste Nullable Values sein können. Das wäre beispielsweise der Fall, wenn ihr mit dem Entity Framework bzw. LINQ auf eine Datenbanktabelle zugegriffen habt, die Felder beinhaltet, die null sein dürfen. Wenn es euch nicht wichtig ist, dass die Columns im DataSet typisiert sind, könnt ihr auch einfach nur Zeile 11 verwenden.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: