目次
列挙型でのDataTableの操作
private enum カラム名 {
ID,
名称,
年齢
}
public void Sample() {
// -- データ
string[] Ids = { "1", "2", "3" };
// -- テーブルを作成
DataTable WorkData = CreateDataTable();
// -- テーブルに値を作成
foreach (string _id in Ids) {
DataRow _row = WorkData.NewRow();
_row[(int)カラム名.ID] = _id;
_row[(int)カラム名.名称] = "名称" + _id;
_row[(int)カラム名.年齢] = int.Parse(_id + "0");
WorkData.Rows.Add(_row);
}
// -- 検索と取得
String Fillter = カラム名.ID.ToString() + " ='2'";
DataRow[] rows = WorkData.Select(Fillter);
// -- 値を取得
if (rows.Count() > 0) {
// -- メッセージボックスを表示する
MessageBox.Show(rows[0][(int)カラム名.名称].ToString(),
"IDが[2]の" + カラム名.名称.ToString() + "を取得",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
private DataTable CreateDataTable() {
DataTable returnValue = new DataTable();
foreach (カラム名 _value in Enum.GetValues(typeof(カラム名)))
{
// -- カラム名をstringで取得
string name = Enum.GetName(typeof(カラム名), _value);
// -- Enumからテーブルを作成する
if (_value.Equals(カラム名.年齢))
{
// -- int型でカラム作成
returnValue.Columns.Add(name, Type.GetType("System.Int32"));
}
else {
// -- string型でカラム作成
returnValue.Columns.Add(name, Type.GetType("System.String"));
}
}
return returnValue;
}
まとめ
個人的にDataTableを扱う際はなるべく列挙型を使用したいと思っています。
メリットとしては
・カラム名を探すのが簡単
・カラム名の打ち間違いが減る
・プログラムの追加や改修が楽になる
などがあげられると思います。
大きいシステムになってくると仕様書からカラム名を探す際もカラム数が多くて一苦労です。
なので今回は列挙型でのデータテーブルの操作を簡単にですが、紹介させていただきました。
ご清聴ありがとうございました。