行コレクション(DataRow []行)があります。そして、すべての行を別のDataTable(DataTable dt)にインポートしたいと思います。
しかし、どのように?
DataTable dt;
if (drs.Length>0)
{
dt = new DataTable();
foreach (DataRow row in drs)
{
dt.Columns.Add(row???????)
}
// If it possible, something like that => dt.Columns.AddRange(????????)
for(int i = 0; i < drs.Length; i++)
{
dt.ImportRow(drs[i]);
}
}
すべての行が同じ構造であると仮定すると、最も簡単なオプションは、データを省略して古いテーブルのクローンを作成することです。
DataTable dt = drs[0].Table.Clone();
または、次のようなものです。
foreach(DataColumn col in drs[0].Table.Columns)
{
dt.Columns.Add(col.ColumnName, col.DataType, col.Expression);
}
DataRowsが、列が定義されているデータテーブルからのものである場合、
DataRow[] rows;
DataTable table = new DataTable();
var columns = rows[0].Table.Columns;
table.Columns.AddRange(columns.Cast<DataColumn>().ToArray());
foreach (var row in rows)
{
table.Rows.Add(row.ItemArray);
}
どうですか
DataTable dt = new DataTable;
foreach(DataRow dr in drs)
{
dt.ImportRow(dr);
}
これは、drs
がDataRowCollection
の場合にのみ機能することに注意してください。切り離された行(DataRowCollection
にないものは無視されます)。
AcceptChangesを呼び出すことを忘れないでください。