Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

Il metodo ImportRow della classe DataTable

Il metodo ImportRow che ho "scoperto" ed utilizzato per la prima volta questa sera è comodo, perchè permette di aggiungere ad una DataTable un oggetto DataRow proveniente da un'altra DataTable.

Ad esempio, possiamo convertire il codice seguente:

foreach (DataRow dr_source in this.Tabella.Rows)
{
    DataRow dr_dest = ds.Tables[0].NewRow();
    dr_dest["name"] = dr_source["Name"];
    dr_dest["birthday"] = dr_source["BirthDate"];
    ds.Tables[0].Rows.Add(dr_dest);
}

con il seguente codice, più compatto e pulito:

foreach (DataRow dr_source in this.Tabella.Rows)
    ds.Tables[0].ImportRow(dr_source);

La compattezza del codice ovviamente aumenta anche in base al numero di DataColumn che compongono la DataTable. Se invece dei due semplici campi 'name' e 'birthday' avessimo 50 campi, il guadagno in termini di lunghezza di codice si fa man mano sempre maggiore.

Qualche annotazione: questa pagina di MSDN spiega nel dettaglio questo metodo. Importare con ImportRow, ricordiamocelo, mantiene la property RowState originaria (se importo una DataRow che nella DataTable origine aveva RowState = Modified, questo stesso valore me lo ritrovo nella DataTable destinazione). Quindi, è molto diverso dal chiamare il metodo NewRow, perchè quest'ultimo crea un "record", imposta RowState su DataRowState.Added, popolando i fields con i valori di default.

Inoltre, cosa importante che mi ha fatto perdere 20 minuti: se la DataRow origjne e la DataRow destinazione hanno struttura diversa (nomi di campi, per esempio), la chiamata a ImportRow non dice assolutamente nulla. Non viene sollevata un'eccezione, nessun errore. Semplicemente, le DataColumn che corrispondono vengono importate, le altre no (valore null???).

powered by IMHO 1.2

Print | posted on martedì 30 agosto 2005 00:57 |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET