2008-11-12 7 views
38

Si j'ai 2 DataTables (dtOne et dtTwo) et je veux les fusionner et les mettre dans un autre DataTable (dtAll). Comment puis-je faire cela en C#? J'ai essayé l'instruction Merge sur le datatable, mais cela renvoie void. Est-ce que Fusionner conserve les données? Par exemple, si je fais:Fusionner 2 DataTables et stocker dans un nouveau

dtOne.Merge(dtTwo); 

Est-ce que le changement dtOne ou ne dtTwo changement et si l'un des changements, faire les changements préserver?

Je sais que je ne peux pas le faire parce que Merge retourne void, mais je veux être en mesure de stocker la fusion des deux dtOne et dtTwo dans dtAll:

//Will Not work, How do I do this 
dtAll = dtOne.Merge(dtTwo); 

Répondre

75

La méthode Merge prend les valeurs de la deuxième table et les fusionne avec la première table, de sorte que le premier tiendra maintenant les valeurs des deux.

Si vous souhaitez conserver les deux tableaux originaux, vous pouvez copier le premier original, puis fusionner:

dtAll = dtOne.Copy(); 
dtAll.Merge(dtTwo); 
+1

Code par @ Knickerless-Noggins: public static DataTable MergeTwoDataTables (table de données DataAable, table DataTableB) {DataTable MethodResult = null; essayez {DataTable TableA = tableA.Copy(); TableA.Merge (tableB); MethodResult = TableA; } catch // (Exception ex) {//ex.HandleException(); } return MethodResult; } ' – Kiquenet

1
DataTable dtAll = new DataTable(); 
DataTable dt= new DataTable(); 
foreach (int id in lst) 
{ 
    dt.Merge(GetDataTableByID(id)); // Get Data Methode return DataTable 
} 
dtAll = dt; 
+0

À mon humble avis, pas de réponse utile. La même réponse que [la réponse de Jeromy Irvine] (http://stackoverflow.com/a/285500/979621). Enfin, utilisez *** Merge ***. – Kiquenet

27

(assez tard, mais pourrait aider quelqu'un trébucher sur cette question.)

Au lieu de dtAll = dtOne.Copy(); à Jeromy Irvine's answer vous pouvez faire:

dtAll = new DataTable(); 
... 
dtAll.Merge(dtOne); 
dtAll.Merge(dtTwo); 
dtAll.Merge(dtThree); 
... 

et ainsi de suite.

Cette technique est utile dans une boucle où vous souhaitez fusionner itérativement tables de données:

DataTable dtAllCountries = new DataTable(); 

foreach(String strCountry in listCountries) 
{ 
    DataTable dtCountry = getData(strCountry); //Some function that returns a data table 
    dtAllCountries.Merge(dtCountry); 
} 
0

C'est ce que je l'ai fait pour la fusion de deux datatables et lier le résultat final à la gridview

 DataTable dtTemp=new DataTable(); 
     for (int k = 0; k < GridView2.Rows.Count; k++) 
     { 
      string roomno = GridView2.Rows[k].Cells[1].Text; 
      DataTable dtx = GetRoomDetails(chk, roomno, out msg); 
      if (dtx.Rows.Count > 0) 
      { 
       dtTemp.Merge(dtx); 
       dtTemp.AcceptChanges(); 

      } 
     } 
+0

À mon humble avis, pas de réponse utile. La même réponse que [la réponse de Jeromy Irvine] (http://stackoverflow.com/a/285500/979621). Enfin, utilisez *** Merge ***. – Kiquenet

Questions connexes