【C#】データテーブルをLINQでList・HashSet・Dictionaryに変換する

C# データテーブル変換 C#
スポンサーリンク

データテーブルをLINQを使用してList・HashSet・Dictionaryに変換する

仕事柄プログラミング言語はC#を使うことが多いのですが、いまだにDataTableを使う人が多くて改修するときに可読性の低さにメンタルが消耗します。

DataTableを使わなくてもList・HashSet・Dictionaryで解決することが多いので、データテーブルからそれぞれの型に変更する方法をまとめておきます。

スポンサーリンク

サンプルの注意書き

  • x.Field(“column1”)の”column1″がDataTableのカラム名に当たります
  • サンプルはすべてstring型になっていますが、数値型でも基本的に同じ方法で変換できます

Listに変換する

DataTableを単純な文字列のListに変換します。

HashSetに変換する

DataTableをHashSetに変換します。
LINQで指定したDataTable項目に同じ値がある場合はHashSetによって重複が排除されます。

2つの値をセットで扱いたい場合はTuple型のHashSetが便利です。
同じ組み合わせの値が存在する場合は重複が排除されます。

Dictionaryに変換する

DictionaryはList・HashSetとは少し方法が異なります。

DataTableからAsEnumerableメソッドを呼び出してToDictionaryメソッドでDictionaryに変換し、DataTableの項目名を指定します。
また、キー項目に重複がある場合はエラーが発生しますので注意が必要です。

まとめ

以上がデータテーブルをLINQでList・HashSet・Dictionaryに変換する方法です。

データベースを使用するときはEntityFrameworkを使えばDataTableなんて使用しなくて済むのですが…
DataTableはLINQでサクッっとデータを取得できない(やりづらい)のがストレスです。

そもそも上記の方法を使う必要がないプログラムが一番なのですが、既存プログラムの修正で必要になることがあるのでご参考までに。

コメント

タイトルとURLをコピーしました