2013-09-25 70 views
12

Như trong tiêu đề - câu hỏi là:Làm thế nào để tạo DataTable mới với cấu trúc cột từ DataTable khác?

Làm thế nào để tạo DataTable mới với cấu trúc cột từ DataTable khác?

Tôi cần DataTable trống để sử dụng phương thức .Rows.Add() trong đó.

Code:

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

Có vẻ như bạn đang tìm kiếm [ '.Clone()'] (http://msdn.microsoft.com/en-us/library/ method.data.datatable.clone.aspx). – Bridge

Trả lời

13

Bạn đang tìm kiếm phương pháp DataTable.Clone() (có sẵn kể từ phiên bản khuôn khổ 1.1).

Từ documentation:

Clone tạo một DataTable mới với cấu trúc tương tự như bản gốc DataTable, nhưng không sao chép bất kỳ dữ liệu (DataTable mới sẽ không chứa bất kỳ DataRows). Để sao chép cả cấu trúc và dữ liệu vào DataTable mới, hãy sử dụng Sao chép.

Trong ví dụ của bạn:

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

Chỉ cần sử dụng DataTable.Clone mà bắt chước schema nhưng không phải là dữ liệu:

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

Bây giờ bạn có thể bắt đầu thêm các hàng mới:

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

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

+1

Ồ vâng, cảm ơn bạn đã chỉnh sửa @Habib. Tôi sắp sửa đi. –

Các vấn đề liên quan