2011-02-03 26 views

回答

50

您可以使用CopyToDataTable,可用IEnumerable<DataRow>类型。

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

正是我在找的感谢 – DontFretBrett 2012-06-22 17:24:15

12

为什么不使用DataView代替?

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

DataView将表现在大同小异的方式,一个DataTable将与额外的好处,任何变化(S)的(在这种情况下dt2)基本DataTable会自动反映在DataView

7

为了清楚起见,Select方法返回一个DataRow类型的数组。这就是为什么我们需要使用CopyToDataTable()。 Alex的回答很好。但是,如果Select未返回任何行,则CopyToDataTable()将抛出InvalidOperationException

因此,在使用CopyToDataTable()之前,测试至少有一个DataRow

var filteredDataRows = dt2.Select(expression); 

var filteredDataTable = new DataTable(); 

if(filteredDataRows.Length != 0) 
    filteredDataTable = filteredDataRows.CopyToDataTable(); 
相关问题