将行从一个Datatable复制到另一个DataTable?

时间:2010-10-26 02:31:57

标签: c# datatable

如何将特定行从DataTable复制到c#中的另一个Datatable?会有不止一行。

13 个答案:

答案 0 :(得分:230)

foreach (DataRow dr in dataTable1.Rows) {
    if (/* some condition */)
        dataTable2.Rows.Add(dr.ItemArray);
}

以上示例假定dataTable1dataTable2具有相同的数量,类型和列顺序。

答案 1 :(得分:82)

将特定行从表复制到另一个

// here dttablenew is a new Table  and dttableOld is table Which having the data 

dttableNew  = dttableOld.Clone();  

foreach (DataRow drtableOld in dttableOld.Rows)
{
   if (/*put some Condition */)
   {
      dtTableNew.ImportRow(drtableOld);
   }
}

答案 2 :(得分:18)

试试这个

    String matchString="ID0001"//assuming we have to find rows having key=ID0001
    DataTable dtTarget = new DataTable();
    dtTarget = dtSource.Clone();
    DataRow[] rowsToCopy;
    rowsToCopy = dtSource.Select("key='" + matchString + "'");
    foreach (DataRow temp in rowsToCopy)
    {
        dtTarget.ImportRow(temp);
    }

答案 3 :(得分:12)

检查一下,你可能会喜欢它(以前,请将table1克隆到table2):

table1.AsEnumerable().Take(recodCount).CopyToDataTable(table2,LoadOption.OverwriteChanges);

或者:

table1.AsEnumerable().Where ( yourcondition  ) .CopyToDataTable(table2,LoadOption.OverwriteChanges);

答案 4 :(得分:10)

受以下版本支持:4,3.5 SP1,您现在可以在对象上调用方法。

DataTable dataTable2 = dataTable1.Copy()

答案 5 :(得分:5)

由于其他帖子,这是我能得到的最短时间:

DataTable destTable = sourceTable.Clone();
sourceTable.AsEnumerable().Where(row => /* condition */ ).ToList().ForEach(row => destTable.ImportRow(row));

答案 6 :(得分:2)

下面的示例将是复制一行的最快方法。 正在根据列名复制每个单元格。 如果您不需要复制特定单元格,请尝试捕获或添加if。 如果你要复制超过1行,那么循环下面的代码。

DataRow dr = dataset1.Tables[0].NewRow();
for (int i = 0; i < dataset1.Tables[1].Columns.Count; i++)
{
    dr[dataset1.Tables[1].Columns[i].ColumnName] = dataset1.Tables[1].Rows[0][i];
}

datasetReport.Tables[0].Rows.Add(dr);

dataset1.Tables [1] .Rows [<强> 0 ] [I];将索引0更改为指定的行索引,或者如果要循环或者它将是逻辑的,则可以使用变量

答案 7 :(得分:1)

 private void CopyDataTable(DataTable table){
     // Create an object variable for the copy.
     DataTable copyDataTable;
     copyDataTable = table.Copy();
     // Insert code to work with the copy.
 }

答案 8 :(得分:1)

对于那些想要单命令SQL查询的人:

INSERT INTO TABLE002 
(COL001_MEM_ID, COL002_MEM_NAME, COL002_MEM_ADD, COL002_CREATE_USER_C, COL002_CREATE_S)
SELECT COL001_MEM_ID, COL001_MEM_NAME, COL001_MEM_ADD, COL001_CREATE_USER_C, COL001_CREATE_S
FROM TABLE001;

此查询会将数据从TABLE001复制到TABLE002,我们假设两列的列名都不同。

列名是一对一映射的,例如:

COL001_MEM_ID-> COL001_MEM_ID

COL001_MEM_NAME-> COL002_MEM_NAME

COL001_MEM_ADD-> COL002_MEM_ADD

COL001_CREATE_USER_C-> COL002_CREATE_USER_C

COL002_CREATE_S-> COL002_CREATE_S

如果需要某些条件,还可以指定where子句。

答案 9 :(得分:1)

我已经创建了一种解决此问题的简单方法

 DataTable newTable = oldtable.Clone();    
 for (int i = 0; i < oldtable.Rows.Count; i++)
 {
   DataRow drNew = newTable.NewRow();    
   drNew.ItemArray = oldtable.Rows[i].ItemArray;    
   newTable.Rows.Add(drNew);   
 } 

答案 10 :(得分:0)

要复制整个数据表,只需执行以下操作:

DataGridView sourceGrid = this.dataGridView1;
DataGridView targetGrid = this.dataGridView2;
targetGrid.DataSource = sourceGrid.DataSource;

答案 11 :(得分:0)

有更好的方法做到这一点。

DataTable targetDataTable = new DataTable(); targetDataTable = changesColumnMetadata.AsEnumerable()。Where(dataRow => entityName.Equals(dataRow [“ EntityName”]))。CopyToDataTable();

请尝试此操作,如有任何问题,请通知我。

答案 12 :(得分:0)

您可以调用 DataTable.Copy() 方法,例如:

   DataSet ds = new DataSet();
   System.Data.DataTable dt = new System.Data.DataTable();
   dt = _BOSearchView.DS.Tables[BusLib.TPV.TableName.SearchView].Copy();
   ds.Tables.Add(dt);
   UltGrdSaleExcel.SetDataBinding(ds, dt.TableName, true);