Respuestas:
foreach (DataRow dr in dataTable1.Rows) {
if (/* some condition */)
dataTable2.Rows.Add(dr.ItemArray);
}
El ejemplo anterior supone que dataTable1
y dataTable2
tiene el mismo número, tipo y orden de columnas.
ItemArray
parte al final de la expresión. Asegúrese de agregar los valores de la fila, no la fila en sí.
DataTable.Clone
método: msdn.microsoft.com/en-us/library/…
Copiar filas especificadas de la tabla a otra
// 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);
}
}
Prueba esto
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);
}
Mira esto, te puede gustar (anteriormente, por favor, clona la tabla1 a la tabla2):
table1.AsEnumerable().Take(recodCount).CopyToDataTable(table2,LoadOption.OverwriteChanges);
O:
table1.AsEnumerable().Where ( yourcondition ) .CopyToDataTable(table2,LoadOption.OverwriteChanges);
Admitido en: 4, 3.5 SP1, ahora solo puede llamar a un método en el objeto.
DataTable dataTable2 = dataTable1.Copy()
Como resultado de las otras publicaciones, esto es lo más corto que pude obtener:
DataTable destTable = sourceTable.Clone();
sourceTable.AsEnumerable().Where(row => /* condition */ ).ToList().ForEach(row => destTable.ImportRow(row));
sourceTable
¿ destTable
también se borrará?
La siguiente muestra sería la forma más rápida de copiar una fila. cada celda se copia en función del nombre de la columna. en caso de que no necesite una celda específica para copiar, intente capturar o agregar if. si va a copiar más de 1 fila, luego repita el código a continuación.
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);
conjunto de datos1. Tablas [1]. Filas [ 0 ] [i]; cambie el índice 0 a su índice de fila especificado o puede usar una variable si va a realizar un bucle o si será lógico
Para aquellos que desean una consulta SQL de comando único para eso:
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;
Esta consulta copiar datos de TABLE001
a TABLE002
y suponemos que las dos columnas tenían diferentes nombres de columna.
Los nombres de columna se asignan uno a uno como:
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
También puede especificar la cláusula where, si necesita alguna condición.
Para copiar toda la tabla de datos, simplemente haga esto:
DataGridView sourceGrid = this.dataGridView1;
DataGridView targetGrid = this.dataGridView2;
targetGrid.DataSource = sourceGrid.DataSource;
He creado una manera fácil de resolver este problema.
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);
}