将行从一个Datatable复制到另一个DataTable?
foreach (DataRow dr in dataTable1.Rows) {
if (/* some condition */)
dataTable2.Rows.Add(dr.ItemArray);
}
上面示例假定和dataTable2
具有相同的数量,类型和列的顺序。
尝试这个
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);
}
答案很好,但性能下降。 – 2012-07-24 11:55:19
复制表指定行到另一
// 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);
}
}
检查了这一点,你可能会喜欢它(之前,请克隆表1至表2):
table1.AsEnumerable().Take(recodCount).CopyToDataTable(table2,LoadOption.OverwriteChanges);
或者:
table1.AsEnumerable().Where (yourcondition ) .CopyToDataTable(table2,LoadOption.OverwriteChanges);
下面的示例将是复制一行的最快方法。 根据列名称正在复制每个单元格。 万一你不需要一个特定的单元格复制,然后尝试捕获或添加如果。 如果您要复制多于一行然后循环下面的代码。
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 [] [I];将索引0更改为指定的行索引,或者如果要进入循环或将其变为逻辑,则可以使用变量
受以下版本支持:4,3.5 SP1,现在可以在对象上调用方法。
DataTable dataTable2 = dataTable1.Copy()
从技术上讲,这会创建一个数据表的副本。虽然在问题中没有明确说明,但dataTable2可能已存在,并且其中有其他行,我们不想丢失。此外,该问题明确指出“特定行”,而这只能处理所有行。 – Matt 2016-03-08 22:24:18
至于其他职位的结果,这是最短的,我可以得到:
DataTable destTable = sourceTable.Clone();
sourceTable.AsEnumerable().Where(row => /* condition */).ToList().ForEach(row => destTable.ImportRow(row));
private void CopyDataTable(DataTable table){
// Create an object variable for the copy.
DataTable copyDataTable;
copyDataTable = table.Copy();
// Insert code to work with the copy.
}
你的代码对我来说很完美,是一个非常简单的代码,谢谢 – 2017-06-28 13:17:04
这是不是结果。“该行已属于 另一个表” – McArthey 2012-06-06 19:59:20
@McArthey不,它不会;正在从现有行中的值创建新行。该行本身不会被添加到其他DataTable中。 – 2012-06-07 00:31:19
这导致“输入数组长度超过此表中的列数”。 – Vinod 2012-10-21 11:46:38