13

行コレクション(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]);
    }
}
4

4 に答える 4

23

すべての行が同じ構造であると仮定すると、最も簡単なオプションは、データを省略して古いテーブルのクローンを作成することです。

DataTable dt = drs[0].Table.Clone();

または、次のようになります。

foreach(DataColumn col in drs[0].Table.Columns)
{
    dt.Columns.Add(col.ColumnName, col.DataType, col.Expression);
}
于 2009-05-10T19:01:32.013 に答える
5

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);  
}
于 2009-05-10T19:13:33.787 に答える
1

どうですか

DataTable dt = new DataTable;
foreach(DataRow dr in drs)
{
    dt.ImportRow(dr);
}

これは、がである場合drsにのみ機能することに注意してくださいDataRowCollection。切り離された行(aにないDataRowCollectionものは無視されます)。

AcceptChangesを呼び出すことを忘れないでください。

于 2009-05-10T19:07:18.023 に答える