Tôi cần phải sao chép một dữ liệu vào một datatable. Nó có vẻ như cách duy nhất để làm như vậy là để lặp qua các mục dataview theo mục và sao chép vào một datatable. Có phải là một cách tốt hơn.Cách dễ nhất để sao chép một dataview đến một datatable trong C#?
13
A
Trả lời
36
dt = DataView.ToTable()
HOẶC
dt = DataView.Table.Copy()
,
HOẶC
dt = DataView.Table.Clone()
;
3
Câu trả lời không hoạt động cho trường hợp của tôi vì tôi có các cột có biểu thức. DataView.ToTable()
sẽ chỉ sao chép các giá trị, chứ không phải các biểu thức.
Đầu tiên tôi đã cố gắng này:
//clone the source table
DataTable filtered = dt.Clone();
//fill the clone with the filtered rows
foreach (DataRowView drv in dt.DefaultView)
{
filtered.Rows.Add(drv.Row.ItemArray);
}
dt = filtered;
nhưng giải pháp đó là rất chậm, thậm chí với giá chỉ 1000 dòng.
Các giải pháp mà làm việc đối với tôi là:
//create a DataTable from the filtered DataView
DataTable filtered = dt.DefaultView.ToTable();
//loop through the columns of the source table and copy the expression to the new table
foreach (DataColumn dc in dt.Columns)
{
if (dc.Expression != "")
{
filtered.Columns[dc.ColumnName].Expression = dc.Expression;
}
}
dt = filtered;
Cảm ơn, google đã thất bại tôi khá nặng. Hy vọng rằng trang này sẽ được xếp hạng cao. – Ravedave
Cảm ơn Jose..Đã hoạt động ... –
Lưu ý: 'DataView.ToTable()' sẽ chỉ sao chép các giá trị của DataView. 'DataView.Table.Copy()' sẽ sao chép DataTable nguồn, không phải dữ liệu được lọc của DataView. 'DataView.Table.Clone()' sẽ chỉ sao chép cấu trúc của DataTable nguồn. – Homer