it-swarm.com.de

2 DataTables zusammenführen und in einem neuen speichern

Wenn ich 2 DataTables (dtOne und dtTwo) habe und diese zusammenführen und in eine andere DataTable (dtAll) einfügen möchte. Wie kann ich das in C # machen? Ich habe die Merge-Anweisung für die Datentabelle ausprobiert, dies führt jedoch zur Stornierung. Bewahrt Merge die Daten? Zum Beispiel, wenn ich:

 dtOne.Merge(dtTwo);

Ändert sich dtOne oder ändert sich dtTwo, und wenn sich eines davon ändert, bleiben die Änderungen erhalten?

Ich weiß, dass ich dies nicht tun kann, weil Merge void zurückgibt, aber ich möchte die Fusion von dtOne und dtTwo in dtAll speichern können:

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

Die Merge-Methode entnimmt die Werte aus der zweiten Tabelle und fügt sie in die erste Tabelle ein. Die erste enthält nun die Werte aus beiden.

Wenn Sie beide Originaltabellen beibehalten möchten, können Sie zuerst das Original kopieren und dann zusammenführen:

dtAll = dtOne.Copy();
dtAll.Merge(dtTwo);
87
Jeromy Irvine

(Ziemlich spät, könnte aber jemandem helfen, über diese Frage zu stolpern.)

Anstelle von dtAll = dtOne.Copy(); in Jeromy Irvines Antwort können Sie Folgendes tun:

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

und so weiter. 

Diese Technik ist in einer Schleife nützlich, in der Sie Datentabellen iterativ zusammenführen möchten:

DataTable dtAllCountries = new DataTable();

foreach(String strCountry in listCountries)
{
    DataTable dtCountry = getData(strCountry); //Some function that returns a data table
    dtAllCountries.Merge(dtCountry);
}
32
SNag
dtAll = dtOne.Copy();
dtAll.Merge(dtTwo,true);

Der Parameter TRUE behält die Änderungen bei.

Weitere Informationen finden Sie unter MSDN .

11
Sagar Reddy
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
rami220

So habe ich zwei Datatables zusammengeführt und das Endergebnis an die Rasteransicht gebunden

        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
anand360