Copier des lignes d'un Datatable à un autre DataTable?
Comment puis-je copier des lignes spécifiques de DataTable vers une autre Datable en c#? Il n'y aura plus qu'une seule ligne.
8 réponses
foreach (DataRow dr in dataTable1.Rows) {
if (/* some condition */)
dataTable2.Rows.Add(dr.ItemArray);
}
L'exemple ci-dessus suppose que dataTable1
et dataTable2
ont le même nombre, le type et l'ordre des colonnes.
Copie les lignes spécifiées de la Table vers une autre
// 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);
}
}
Essayez Ceci
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);
}
Vérifiez ceci, vous pouvez l'aimer (auparavant, veuillez cloner table1 à table2):
table1.AsEnumerable().Take(recodCount).CopyToDataTable(table2,LoadOption.OverwriteChanges);
Ou:
table1.AsEnumerable().Where ( yourcondition ) .CopyToDataTable(table2,LoadOption.OverwriteChanges);
Pris en charge dans: 4, 3.5 SP1, vous pouvez maintenant appeler une méthode sur l'objet.
DataTable dataTable2 = dataTable1.Copy()
À la suite des autres messages, c'est le plus court que j'ai pu obtenir:
DataTable destTable = sourceTable.Clone();
sourceTable.AsEnumerable().Where(row => /* condition */ ).ToList().ForEach(row => destTable.ImportRow(row));
L'exemple ci-dessous serait le moyen le plus rapide de copier une ligne. chaque cellule est copiée en fonction du nom de la colonne. dans le cas où vous n'avez pas besoin d'une cellule spécifique à copier, essayez catch ou ajoutez if. si vous allez copier plus de 1 ligne, bouclez le code ci-dessous.
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].Lignes[0][I]; changez l'index 0 en votre index de ligne spécifié ou vous pouvez utiliser une variable si vous allez en boucle ou si cela va être logique
private void CopyDataTable(DataTable table){
// Create an object variable for the copy.
DataTable copyDataTable;
copyDataTable = table.Copy();
// Insert code to work with the copy.
}