2011-02-03 10 views

Respuesta

50

Puede usar CopyToDataTable, disponible en IEnumerable<DataRow> tipos.

var filteredData = dt2.Select(expression).CopyToDataTable(); 
+2

Justo lo que estaba buscando gracias – DontFretBrett

12

¿Por qué no utilizar un DataView en su lugar?

DataView view = new DataView(dt2); 
view.RowFilter = "parent_id = 1"; 

DataView se comportará en mucho la misma manera que lo haría un DataTable con el beneficio añadido de que cualquier cambio (s) al subyacente DataTable (dt2 en este caso) se refleja automáticamente en el DataView.

7

Para mayor claridad, el método Select devuelve una matriz del tipo DataRow. Es por eso que necesitamos usar CopyToDataTable(). La respuesta de Alex es buena. Sin embargo, si el Select no devolvió ninguna fila, CopyToDataTable() lanzará un InvalidOperationException.

Así que pruebe que hay al menos un DataRow antes de usar el CopyToDataTable().

var filteredDataRows = dt2.Select(expression); 

var filteredDataTable = new DataTable(); 

if(filteredDataRows.Length != 0) 
    filteredDataTable = filteredDataRows.CopyToDataTable(); 
Cuestiones relacionadas