列挙型でのデータテーブルの操作 – Vb.Net


列挙型でのDataTableの操作

Public Class DataTableOfEnum

    Private Enum カラム名
        ID
        名称
        年齢
    End Enum

    Public Sub Sample()

        ' --- データ
        Dim Ids As String() = {"1", "2", "3"}

        ' --- テーブルを作成
        Dim WorkData As DataTable = CreateDataTable()

        ' -- テーブルに値を作成
        For Each _id As String In Ids
            Dim _row As DataRow = WorkData.NewRow()
            _row.Item(カラム名.ID) = _id
            _row.Item(カラム名.名称) = "名称" + _id
            _row.Item(カラム名.年齢) = Integer.Parse(_id + "0")
            WorkData.Rows.Add(_row)
        Next

        ' --- 検索と取得
        Dim Fillter As String = カラム名.ID.ToString() + " ='2'"
        Dim rows As DataRow() = WorkData.Select(Fillter)

        ' -- 値を取得
        If rows.Count > 0 Then
            MessageBox.Show(rows(0).Item(カラム名.名称),
                            "IDが[2]の" + カラム名.名称.ToString() + "を取得",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Information)
        End If

    End Sub

    Private Function CreateDataTable() As DataTable

        Dim returnValue As DataTable = New DataTable()

        For Each value As カラム名 In [Enum].GetValues(GetType(カラム名))
            ' --- Enumからテーブルを作成する
            If value.Equals(カラム名.年齢) Then
                ' --- int型でカラム作成
                returnValue.Columns.Add(value.ToString(), Type.GetType("System.Int32"))
            Else
                ' --- string型でカラム作成
                returnValue.Columns.Add(value.ToString(), Type.GetType("System.String"))
            End If

        Next

        Return returnValue

    End Function

End Class


まとめ

個人的にDataTableを扱う際はなるべく列挙型を使用したいと思っています。
メリットとしては
・カラム名を探すのが簡単
・カラム名の打ち間違いが減る
・プログラムの追加や改修が楽になる
などがあげられると思います。

大きいシステムになってくると仕様書からカラム名を探す際もカラム数が多くて一苦労です。
なので今回は列挙型でのデータテーブルの操作を簡単にですが、紹介させていただきました。

ご清聴ありがとうございました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする