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

我怎么能从DataTable拷贝特定的行到C#中的另一个Datable? 会有不止一行。

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

上面的例子假定dataTable1dataTable2具有相同的数量,types和列顺序。

从表中复制指定的行到另一个

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

尝试这个

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

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

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

要么:

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

受以下版本支持:4,3.5 SP1,现在只需在对象上调用一个方法即可。

 DataTable dataTable2 = dataTable1.Copy() 

由于其他职位,这是我可以得到的最短的:

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

下面的示例将是复制一行的最快方法。 每个单元格正在根据列名称进行复制。 万一你不需要一个特定的单元格复制然后尝试捕获或添加如果。 如果你要复制超过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更改为您指定的行索引,或者如果您要循环或将其变为逻辑,则可以使用variables

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