Comment pouvons-nous copier les données de la colonne de données du datatable dans un autre datatable?

Comment pouvons-nous copier une colonne de données avec des données d’un datatable à un autre datatable? J’ai datatable comme

DataTable datatable1=new DataTable(); 

et il y a quatre colonnes dans cette table mais je veux seulement une colonne.Alors je fais comme

 DataTable datatable2=new DataTable(); addressAndPhones2.Columns.Add(addressAndPhones.Columns[0].ColumnName,addressAndPhones.Columns[0].DataType); 

mais cela ne fait qu’append la colonne mais je veux copier les données de cette colonne dans le datatable2.C’est-à-dire que je veux copier la colonne de données avec les données d’un datatable à un autre datatable.

Deux solutions viennent à l’esprit:

  1. Après avoir créé la colonne, parcourez toutes les lignes pour copier les données de la source vers la cible.
  2. Faites un datatable1.Copy () pour copier toutes les colonnes + données et supprimez celles dont vous n’avez pas besoin.

Le second est plus simple à coder mais copiera les données inutiles (ce qui signifie plus de temps et de mémoire).

Pour le premier, SI vous avez préparé le destinataire datable ET les noms de colonnes (et types) dans la source et le destin sont les mêmes:

 private void CopyColumns(DataTable source, DataTable dest, params ssortingng[] columns) { foreach (DataRow sourcerow in source.Rows) { DataRow destRow = dest.NewRow(); foreach(ssortingng colname in columns) { destRow[colname] = sourcerow[colname]; } dest.Rows.Add(destRow); } } 

Vous pouvez utiliser ceci comme:

 CopyColumns(source, destiny, "Column1", "column2"); 

nommer un nombre quelconque de colonnes.

Vous pouvez parcourir toutes les lignes avec quelque chose comme ceci:

 private void CopyColumn(DataTable srcTable, DataTable dstTable, ssortingng srcColName, ssortingng dstColName) { foreach (DataRow row in srcTable.Rows ) { DataRow newRow = dstTable.NewRow(); newRow[dstColName] = row[srcColName]; dstTable.Rows.Add(newRow); } }