2013-09-25 25 views
12

Podobnie jak w tytule - pytanie brzmi:Jak utworzyć nową DataTable ze strukturą kolumn z innych DataTable?

Jak utworzyć nową DataTable ze strukturą kolumn z innych DataTable?

Potrzebuję pustego DataTable do użycia w nim metody .Rows.Add().

Kod:

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

Brzmi jak szukasz w [ '.Clone()'] (http://msdn.microsoft.com/en-us/library/ system.data.datatable.clone.aspx) metoda. – Bridge

Odpowiedz

13

Szukasz sposobu DataTable.Clone() (dostępny od wersji ramowej 1.1).

Z documentation:

Clone tworzy nowy DataTable z taką samą strukturę jak oryginalny DataTable, ale nie kopiuje żadnych danych (nowy DataTable nie będzie zawierać żadnych datarows ). Aby skopiować zarówno strukturę, jak i dane do nowej tabeli danych Data2, należy użyć opcji Kopiuj.

W przykładzie:

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

Wystarczy użyć DataTable.Clone której klony schematu, ale nie dane:

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

Teraz można rozpocząć dodawanie nowych wierszy:

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

'dtFirst.First();' literówka? :) – Kamil

+1

O tak, dziękuję za edycję @Habib. Właśnie miałem iść. –