Answers:
foreach (DataRow dr in dataTable1.Rows) {
if (/* some condition */)
dataTable2.Rows.Add(dr.ItemArray);
}
上面的示例假设dataTable1
且dataTable2
具有相同的列数,类型和顺序。
ItemArray
在表达式末尾省略该部分时,才会发生这种情况。确保添加的是行的值,而不是行本身。
DataTable.Clone
方法,请参阅MSDN文档:msdn.microsoft.com/en-us/library/…–
将指定行从表复制到另一个
// 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);
下面的示例是复制一行的最快方法。将根据列名称复制每个单元格。如果您不需要特定的单元格进行复制,则可以尝试捕获或添加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更改为指定的行索引,或者如果要循环或逻辑上合理的话,可以使用变量
对于那些想要单命令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子句。