我们如何将数据表的数据列的数据复制到另一个数据表?

时间:2010-04-06 09:50:24

标签: c# .net winforms datatable copy

我们如何使用一个数据表中的数据复制一个数据列到另一个数据表?我有像

这样的数据表
DataTable datatable1=new DataTable();

并且该表中有四列,但我只想要一列。所以我喜欢

DataTable datatable2=new DataTable(); 
addressAndPhones2.Columns.Add(addressAndPhones.Columns[0].ColumnName,addressAndPhones.Columns[0].DataType);

但这只是添加了列,但我想将该列的数据复制到datatable2。这就是我想将数据从一个数据表复制到另一个数据表的数据列。

2 个答案:

答案 0 :(得分:11)

我想到了两个解决方案:

  1. 创建列后,遍历所有行以将数据从源复制到目标。
  2. 执行datatable1.Copy()复制所有列+数据并删除不需要的列。
  3. 第二个更容易编码,但会复制不需要的数据(这意味着额外的时间和内存)。

    对于第一个,如果你准备了命运数据表,并且源和命运中的列名(和类型)是相同的:

    private void CopyColumns(DataTable source, DataTable dest, params string[] columns)
    {
      foreach (DataRow sourcerow in source.Rows)
      {
         DataRow destRow = dest.NewRow();
         foreach(string colname in columns)
         {
            destRow[colname] = sourcerow[colname];
         }
         dest.Rows.Add(destRow);
      }
    }
    

    你可以使用它:

    CopyColumns(source, destiny, "Column1", "column2");
    

    命名任意数量的列。

答案 1 :(得分:3)

您可以使用以下内容循环所有行:

private void CopyColumn(DataTable srcTable, DataTable dstTable, string srcColName, string dstColName)
{
    foreach (DataRow row in srcTable.Rows )
    {
        DataRow newRow = dstTable.NewRow();
        newRow[dstColName] = row[srcColName];
        dstTable.Rows.Add(newRow);
    }
}