C# DataRowの配列をDataTableに変換する

DataTableをselectで取り出したDataRowの配列をDataTableに変換するには、CopyToDataTable()をつかいます。

たとえば、DataTableからSelectで行を取り出すと、DataRowの配列で返されますが、それをまとめてTableに変換するには、次のようにします。  

 DataTable dt = new DataTable();
 DataColumn[] dc = { new DataColumn("name", typeof(string)), new DataColumn("age", typeof(int)) };
 dt.Columns.AddRange(dc);

 DataRow dr = dt.NewRow();
 dr["name"] = "tanaka";
 dr["age"] = "18";
 dt.Rows.Add(dr);

 dr = dt.NewRow();
 dr["name"] = "inoue";
 dr["age"] = "24";
 dt.Rows.Add(dr);

 dr = dt.NewRow();
 dr["name"] = "yamada";
 dr["age"] = "19";
 dt.Rows.Add(dr);

 DataRow[] selectedRows = dt.Select("age<20");//ageが20未満の人をSelectで取り出す
 DataTable selectedTable = selectedRows.CopyToDataTable();//selectedRows をDataTableに変換

ちなみに、DataTableの内容をごっそりDataRowに変換したかったら、単に、

 DataRow[] selectedRows = dt.Select();

とします。

参考になったサイトさん:
http://devlights.hatenablog.com/entry/20090130/p1

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