2013-09-25 17 views
12

Come nel titolo, la domanda è:Come creare un nuovo DataTable con struttura di colonne da altri DataTable?

Come creare un nuovo DataTable con struttura di colonna da altri DataTable?

Ho bisogno di DataTable vuoto per utilizzare il metodo .Rows.Add() al suo interno.

Codice:

DataTable dtFirst = new DataTable(); 
dtFirst.Columns.Add("column1"); 
dtFirst.Columns.Add("column2"); 
dtFirst.Columns.Add("column3"); 

FillDataTableFirst(); // before I create second DataTable - dtFirst is filled 

// here I need dtSecond DataTable with same column structure 
// i cant just copy first data table, because it contains data 

DataTable dtSecond = ???; 
+4

Sembra che tu stai cercando il [ '.Clone()'] (http://msdn.microsoft.com/en-us/library/ system.data.datatable.clone.aspx) metodo. – Bridge

risposta

13

Stai cercando il metodo DataTable.Clone() (disponibile a partire dalla versione quadro 1.1).

Dal documentation:

Clone crea un nuovo DataTable con la stessa struttura dell'originale DataTable, ma non copia i dati (il nuovo DataTable non contenere DataRow). Per copiare sia la struttura che i dati in un nuovo DataTable , utilizzare Copia.

Nel tuo esempio:

DataTable dtFirst = new DataTable(); 
dtFirst.Columns.Add("column1"); 
dtFirst.Columns.Add("column2"); 
dtFirst.Columns.Add("column3"); 

FillDataTableFirst(); // before I create second DataTable - dtFirst is filled 

DataTable dtSecond = dtFirst.Clone(); 
8

Basta usare DataTable.Clone che clona lo schema, ma non i dati:

DataTable dtSecond = dtFirst.Clone(); // empty 

Ora si può iniziare ad aggiungere nuove righe:

DataRow newRow = dtSecond.Rows.Add(); 
newRow.SetField("column1", "Value1"); 
newRow.SetField("column2", "Value2"); 
newRow.SetField("column3", "Value3"); 
+3

'dtFirst.First();' typo? :) – Kamil

+1

Oh sì, grazie per la modifica @Habib. Stavo per andare. –