💡

C# の DataTable は DB ではない

に公開

C# には、
DB ではないが テーブルのように行と列を持つデータ構造 が存在する。
それが DataTable である。


DataTable とは?

DataTable は メモリ上に存在するテーブル構造 を表すクラスだ。

  • 列(Column)
  • 行(Row)
  • 列ごとに型を指定できる

見た目は DB に近いが、DB そのものではない。

var table = new DataTable();
table.Columns.Add("Id", typeof(int));
table.Columns.Add("Name", typeof(string));

table.Rows.Add(1, "Alice");
table.Rows.Add(2, "Bob");

DataTable はどこに存在するのか?

  • DB ❌
  • ファイル ❌
  • ネットワーク ❌

アプリケーションのメモリ上にのみ存在する。
プロセスが終了すれば、データも失われる。


DataTable はどんな場面で使われるか?

  • DB の検索結果を 一時的に加工したいとき
  • Grid / Table 系の UI にバインドするとき
  • ADO.NET ベースのレガシーコード
  • 列構造が動的に変わるデータ を扱うとき

特に、「テーブル構造そのもの」が重要なケースで使われる。


List<T> との違い

項目 DataTable List<T>
構造 行 / 列 オブジェクトの集合
型 実行時に決まる コンパイル時に決まる
可読性 低め 高い
LINQ 制限あり 非常に使いやすい

ビジネスロジックでは List<T> の方が適している 場合が多い。


今でも DataTable を使うべきか?

  • 新規開発:❌(List / Entity を推奨)
  • レガシー保守:⭕
  • テーブル構造が主役の処理:⭕

DataTable は「古いから悪い」のではなく、
用途が明確な型 だと言える。


まとめ

  • DataTable は DB ではない
  • メモリ上のテーブル構造である
  • 一時データや UI バインディングに向いている
  • ビジネスロジック中心のコードでは注意が必要

Discussion