2009-05-26 5 views
1

J'ai un DataTable rempli avec des valeurs d'une base de données. J'ai un autre datatable que je crée qui a les mêmes noms de colonnes que le premier, plus quelques données supplémentaires dont j'ai besoin pour créer un CSV sur toute la ligne. Ce que je voudrais faire est de prendre les données de la première table et l'utiliser pour remplir la deuxième table, puis plus tard je peux remplir les autres données.Insertion de valeurs dans des données

Je sais que je peux le faire d'une manière très mécanique, en bouclant cependant, en créant de nouvelles lignes et en remplissant ensuite la cellule pour la cellule de la première table. J'espère que quelqu'un sait quelque chose d'un peu plus lisse.

Jim

Répondre

2

Vous pouvez utiliser la méthode Merge sur la table de données. La seule chose que vous devez savoir est que les deux DataTables doivent avoir une clé primaire. Celui qui vient de la base de données le fait probablement déjà, mais celui que vous remplissez en mémoire ne le fait probablement pas.

Vous pouvez facilement définir la clé primaire comme ceci:

table.PrimaryKey = new DataColumn[] { table.Columns[0]}; //or whatever column you want. 
+0

Je ne trouve pas que cela soit vrai. Tout ce qu'il avait à faire était de câbler les noms des colonnes pour qu'ils soient identiques. – jim

+0

Oui, mais si vous avez deux lignes identiques dans les deux tables, avec des valeurs légèrement différentes, au lieu d'une mise à jour, l'insertion sera effectuée et vous obtiendrez deux lignes au lieu d'une seule. – BFree

+0

ok ... bon point ... comme je faisais un insert droit ce problème ne s'est pas posé. – jim

Questions connexes