2011-02-03 11 views

risposta

50

È possibile utilizzare CopyToDataTable, disponibile nei tipi IEnumerable<DataRow>.

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

Proprio quello che stavo cercando grazie – DontFretBrett

12

Perché non utilizzare uno DataView invece?

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

DataView si comporteranno in molto nello stesso modo che un DataTable farebbe con l'ulteriore vantaggio che ogni cambiamento (s) del sottostante DataTable (dt2 in questo caso) verrebbe automaticamente riportata DataView.

7

Solo per chiarezza, il metodo Select restituisce un array di tipo DataRow. Ecco perché dobbiamo usare CopyToDataTable(). La risposta di Alex è buona. Tuttavia, se lo Select non ha restituito alcuna riga, CopyToDataTable() genererà un valore InvalidOperationException.

Quindi verificare che vi sia almeno uno DataRow prima di utilizzare CopyToDataTable().

var filteredDataRows = dt2.Select(expression); 

var filteredDataTable = new DataTable(); 

if(filteredDataRows.Length != 0) 
    filteredDataTable = filteredDataRows.CopyToDataTable(); 
Problemi correlati