代码之家  ›  专栏  ›  技术社区  ›  uzay95

如何从数据行中获取列?

  •  10
  • uzay95  · 技术社区  · 15 年前

    我有一个行集合(datarow[]行)。我想将所有行导入另一个数据表(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]);
        }
    }
    
    3 回复  |  直到 8 年前
        1
  •  17
  •   Marc Gravell    15 年前

    假设所有行都具有相同的结构,最简单的选项是克隆旧表,省略数据:

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

    或者,类似于:

    foreach(DataColumn col in drs[0].Table.Columns)
    {
        dt.Columns.Add(col.ColumnName, col.DataType, col.Expression);
    }
    
        2
  •  3
  •   Sathish Naga    15 年前

    如果数据行来自其中定义了列的数据表,

    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);  
    }
    
        3
  •  1
  •   Alan McBee    15 年前

    怎么样

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

    注意这只在以下情况下有效 drs 是一个 DataRowCollection . 分离的行(不在 数据行集合 被忽略)。

    不要忘记调用AcceptChanges。