2009-05-13 27 views
30

Vorrei aggiungere un DataTable a un altro DataTable. Vedo che la classe DataTable ha due metodi; "Load (IDataReader)" e "Merge (DataTable)". Dalla documentazione, entrambi sembrano "unire" i dati in arrivo con il DataTable esistente se esistono delle righe. Farò l'unione in un livello di accesso ai dati.Come aggiungere un DataTable a un altro DataTable

Potrei usare un IDataReader e utilizzare il metodo Load per unire i DataTable. Oppure potrei caricare un DataSet utilizzando IDataReader, ottenere il DataTable dal DataSet e quindi utilizzare il metodo Unisci per unire i DataTable.

Mi chiedevo se qualcuno potesse dirmi qual è il metodo corretto da utilizzare?

In alternativa, fammi sapere se hai un suggerimento diverso su come eseguire questa operazione.

risposta

40

L'unione acquisisce un DataTable, il caricamento richiede un IDataReader, quindi in base al livello dati a cui accedere, utilizzare il metodo richiesto. La mia comprensione è che Load chiamerà internamente Merge, ma non sicuro al 100%.

Se si dispone di due DataTable, utilizzare Unisci.

14

Puoi lasciare che il tuo DataAdapter lavori. DataAdapter.Fill(DataTable) aggiungerà le nuove righe a qualsiasi riga esistente in DataTable.

+2

Risposta migliore proprio qui –

+1

Rende difficile compito lo ok facile! – ashubuntu

35

Il tipo di dati nel nome stesso colonne deve essere uguale.

dataTable1.Merge(dataTable2); 

Dopo che il risultato è il seguente:

dataTable1 = dataTable1 + dataTable2

+0

risparmi il mio tempo grazie – destinydz

4

Aggiungere due set di dati contenenti DataTable, ora si fonderanno come richiesto

DataSet ds1 = new DataSet(); 
DataSet ds2 = new DataSet(); 

DataTable dt1 = new DataTable(); 
dt1.Columns.Add(new DataColumn("Column1", typeof(System.String))); 

DataRow newSelRow1 = dt1.NewRow(); 
newSelRow1["Column1"] = "Select"; 
dt1.Rows.Add(newSelRow1); 

DataTable dt2 = new DataTable(); 
dt2.Columns.Add(new DataColumn("Column1", typeof(System.String))); 

DataRow newSelRow2 = dt1.NewRow(); 
newSelRow2["Column1"] = "DataRow1Data"; // Data 
dt2.Rows.Add(newSelRow2); 

ds1.Tables.Add(dt1); 
ds2.Tables.Add(dt2); 

ds1.Tables[0].Merge(ds2.Tables[0]); 

Ora DS1 avrà la dati uniti

+0

Non c'è bisogno di andare duro quando ci sono modi semplici e integrati per fare esattamente lo stesso lavoro. Già raggiunto con tremenda pressione come programmatore :) – ashubuntu

Problemi correlati