Fusionner 2 DataTables et stocker dans un nouveau

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 ça en C#? J'ai essayé la Déclaration de fusion sur le datatable, mais ça renvoie NULL. Ne de Fusion de conserver les données? Par exemple, si je fais:

 dtOne.Merge(dtTwo);

Ne dtOne changer ou de ne dtTwo changement et si l'un des deux changements, les modifications préserver?

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

//Will Not work, How do I do this
dtAll = dtOne.Merge(dtTwo);
43
demandé sur Xaisoft 2008-11-13 00:39:33

5 réponses

Merge méthode prend les valeurs de la deuxième table et les fusionne avec le premier tableau, de sorte que le premier détient désormais les valeurs des deux.

si vous voulez conserver les deux tables originales, vous pouvez copier l'original en premier, puis fusionner:

dtAll = dtOne.Copy();
dtAll.Merge(dtTwo);
81
répondu Jeromy Irvine 2008-11-12 21:46:24

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



Au lieu de dtAll = dtOne.Copy(); Jeromy la réponse D'Irvine 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 voulez fusionner itérativement les 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);
}
30
répondu SNag 2017-05-23 11:47:02
dtAll = dtOne.Copy();
dtAll.Merge(dtTwo,true);

le paramètre TRUE préserve les changements.

Pour plus de détails consultez le lien ci-dessous. http://msdn.microsoft.com/en-us/library/wkk7s5zk.aspx

11
répondu Tim Jarvis 2009-05-12 03:35:55
DataTable dtAll = new DataTable();
DataTable dt= new DataTable();
foreach (int id in lst)
{
    dt.Merge(GetDataTableByID(id)); // Get Data Methode return DataTable
}
dtAll = dt;
1
répondu rami220 2011-01-11 15:27:32

C'est ce que j'ai fait pour fusionner deux datatables et lier le résultat final à 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
répondu anand360 2016-08-30 07:53:56