2011-02-03 14 views

Odpowiedz

50

Można użyć CopyToDataTable, dostępnych w typach IEnumerable<DataRow>.

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

Po prostu to, czego szukałem, dzięki – DontFretBrett

12

Dlaczego zamiast tego użyć numeru DataView?

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

DataView będzie zachowywać się bardzo dużo w ten sam sposób, że DataTable będzie z dodatkową korzyścią, że wszelkie zmiany (ów) bazowego DataTable (dt2 w tym przypadku) będą automatycznie odzwierciedlane w DataView.

7

Dla jasności, metoda Select zwraca tablicę typu DataRow. Dlatego musimy użyć CopyToDataTable(). Odpowiedź Alexa jest dobra. Jednakże, jeśli Select nie zwróci żadnych wierszy, CopyToDataTable() rzuci InvalidOperationException.

Przetestuj, czy istnieje co najmniej jeden DataRow przed użyciem CopyToDataTable().

var filteredDataRows = dt2.Select(expression); 

var filteredDataTable = new DataTable(); 

if(filteredDataRows.Length != 0) 
    filteredDataTable = filteredDataRows.CopyToDataTable(); 
Powiązane problemy