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);
}

请注意,这仅适用drsDataRowCollection. 分离的行(不在 aDataRowCollection中被忽略)。

不要忘记调用 AcceptChanges。

于 2009-05-10T19:07:18.023 回答
0

试试这个:

// Assuming you have a DataRow object named row:
foreach(DataColumn col in row.Table.Columns)
{
    // Do whatever you need to with these columns
}
于 2021-09-15T22:06:38.167 回答