如何将DataTable.Select()结果传递给新的DataTable?
我有一个名为dt2
的DataTable
和数据。 我调用它的Select
方法来获取一些特定的行。
DataRow[] foundRows; expression = "parent_id=1"; foundRows = dt2.Select(expression);
如何将Select
-method结果传递给新的DataTable
– 比如FilteredData
?
您可以使用IEnumerable
类型上提供的CopyToDataTable
。
var filteredData = dt2.Select(expression).CopyToDataTable();
为什么不使用DataView
呢?
DataView view = new DataView(dt2); view.RowFilter = "parent_id = 1";
DataView
行为方式与DataTable
行为方式非常相似,可以在DataView
自动反映对底层DataTable
(本例中为dt2
)的任何更改。
为清楚起见, Select
方法返回DataRow
类型的数组。 这就是我们需要使用CopyToDataTable()
。 亚历克斯的答案很好。 但是,如果Select
没有返回任何行,则CopyToDataTable()
将抛出InvalidOperationException
。
因此,在使用CopyToDataTable()
之前测试至少有一个DataRow
。
var filteredDataRows = dt2.Select(expression); var filteredDataTable = new DataTable(); if(filteredDataRows.Length != 0) filteredDataTable = filteredDataRows.CopyToDataTable();