Ho bisogno di copiare un dataview in un datatable. Sembra che l'unico modo per farlo sia quello di scorrere l'oggetto dataview per elemento e copiarlo su un datatable. Ci deve essere un modo migliore.Il modo più semplice per copiare una vista dati su un datatable in C#?
13
A
risposta
36
dt = DataView.ToTable()
O
dt = DataView.Table.Copy()
,
O
dt = DataView.Table.Clone()
;
3
La risposta non funziona per la mia situazione perché ho colonne con espressioni. DataView.ToTable()
copierà solo i valori, non le espressioni.
Per prima cosa ho provato questo:
//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;
ma questa soluzione era molto lento, anche solo per 1000 righe.
La soluzione che ha funzionato per me è:
//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;
Grazie, google mi stava venendo a mancare piuttosto male. Speriamo che questa pagina si classifichi altamente. – Ravedave
Grazie Jose ... Ha funzionato ... –
Nota: 'DataView.ToTable()' copierà solo i valori di DataView. 'DataView.Table.Copy()' copierà il DataTable di origine, non i dati filtrati di DataView. 'DataView.Table.Clone()' copierà solo la struttura del DataTable di origine. – Homer