Domanda Unisci 2 DataTable e memorizzane uno nuovo


Se ho 2 DataTable (dtOne e dtTwo) e voglio unirli e inserirli in un altro DataTable (dtAll). Come posso farlo in C #? Ho provato la dichiarazione Merge sul datatable, ma questo restituisce vuoto. Unisci conserva i dati? Ad esempio, se lo faccio:

 dtOne.Merge(dtTwo);

DtOne cambia o dtTwo cambia e se uno dei due cambia, le modifiche vengono mantenute?

So che non posso farlo perché Merge non restituisce nulla, ma voglio essere in grado di memorizzare la fusione di dtOne e dtTwo in dtAll:

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

42
2017-11-12 21:39


origine


risposte:


Il Merge metodo prende i valori dalla seconda tabella e li unisce con la prima tabella, quindi il primo conterrà i valori di entrambi.

Se vuoi conservare entrambe le tabelle originali, puoi prima copiare l'originale, quindi unire:

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

79
2017-11-12 21:46



(Molto tardi, ma potrebbe aiutare qualcuno che inciampa su questa domanda).

Invece di dtAll = dtOne.Copy(); in La risposta di Jerome Irvine tu puoi fare:

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

e così via.

Questa tecnica è utile in un ciclo in cui si desidera unire iterativamente le tabelle di dati:

DataTable dtAllCountries = new DataTable();

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

29
2018-01-18 11:22



dtAll = dtOne.Copy();
dtAll.Merge(dtTwo,true);

Il parametro TRUE conserva le modifiche.

Per maggiori dettagli, fare riferimento al link sottostante. http://msdn.microsoft.com/en-us/library/wkk7s5zk.aspx


10
2018-01-18 01:25



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
2018-01-11 15:27



Questo è quello che ho fatto per unire due datatables e associare il risultato finale al 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
2017-08-30 07:53