如何将DataTable.Select()结果传递给新的DataTable?

时间:2011-02-03 07:40:50

标签: c# .net datatable

我有DataTable名为dt2的数据。我正在调用其Select方法来获取一些特定的行。

DataRow[] foundRows;

expression = "parent_id=1";

foundRows = dt2.Select(expression);

如何将Select - 方法结果传递给新的DataTable - 说FilteredData

3 个答案:

答案 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的行为方式非常相似,只是对基础DataTabledt2的任何更改都有额外的好处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();