ExtensionMethod.NET Home of 880 C#, Visual Basic, F# and Javascript extension methods

ToDictionary

Converts Dictionary to DataTable and DataTable to Dictionary

Source

Imports System.Runtime.CompilerServices

Public Module DataTableExtensions

    ''' <summary>
    ''' Converts Dictionary to DataTable
    ''' </summary>
    ''' <typeparam name="Tkey"></typeparam>
    ''' <typeparam name="TVal"></typeparam>
    ''' <param name="dict"></param>
    ''' <returns></returns>
    <Extension()>
    Public Function FromDictionary(Of Tkey, TVal)(ByRef dict As Dictionary(Of Tkey, TVal)) As DataTable
        Dim dt As New DataTable("Dictionary")

        dt.Columns.Add(New DataColumn("Key", GetType(Tkey)))
        dt.Columns.Add(New DataColumn("Value", GetType(TVal)))

        For Each dictentry In dict
            Dim newrow As DataRow = dt.Rows.Add()
            newrow.Item("Key") = dictentry.Key
            newrow.Item("Value") = dictentry.Value
        Next
        Return dt
    End Function


    ''' <summary>
    ''' Converts DataTable to Dictionary
    ''' </summary>
    ''' <typeparam name="Tkey"></typeparam>
    ''' <typeparam name="TVal"></typeparam>
    ''' <param name="dt"></param>
    ''' <returns></returns>
    <Extension()>
    Public Function ToDictionary(Of Tkey, TVal)(ByRef dt As DataTable) As Dictionary(Of Tkey, TVal)
        Dim dict As New Dictionary(Of Tkey, TVal)
        For Each row As DataRow In dt.Rows
            dict.Add(row.Field(Of Tkey)("Key"), row.Field(Of TVal)("Value"))
        Next
        Return dict
    End Function

End Module

Example

Dim testdict As New Dictionary(Of String, Int16)
testdict.Add("Gollum", 123)
testdict.Add("ALF", 15)
testdict.Add("Gandalf", 66)

Dim y As DataTable = FromDictionary(Of String, Int16)(testdict)

Dim yy As Dictionary(Of String, Int16)= ToDictionary(Of String, Int16)(y)

Author: Mike Lorenz

Submitted on: 12 apr. 2018

Language: VB

Type: System.DataTable

Views: 5925