我有DataTable
名为dt2
的数据。我正在调用其Select
方法来获取一些特定的行。
DataRow[] foundRows;
expression = "parent_id=1";
foundRows = dt2.Select(expression);
如何将Select
- 方法结果传递给新的DataTable
- 说FilteredData
?
答案 0 :(得分:58)
您可以使用IEnumerable<DataRow>
类型的CopyToDataTable
。
var filteredData = dt2.Select(expression).CopyToDataTable();
答案 1 :(得分:14)
为什么不改用DataView
?
DataView view = new DataView(dt2);
view.RowFilter = "parent_id = 1";
DataView
的行为方式与DataTable
的行为方式非常相似,只是对基础DataTable
(dt2
的任何更改都有额外的好处case)将自动反映在DataView
。
答案 2 :(得分:12)
为了清楚起见,Select
方法返回类型为DataRow
的数组。这就是我们需要使用CopyToDataTable()
的原因。亚历克斯的答案很好。但是,如果Select
没有返回任何行,则CopyToDataTable()
会抛出InvalidOperationException
。
在使用DataRow
之前测试至少有一个CopyToDataTable()
。
var filteredDataRows = dt2.Select(expression);
var filteredDataTable = new DataTable();
if(filteredDataRows.Length != 0)
filteredDataTable = filteredDataRows.CopyToDataTable();