我有一个DataTable
用数据命名为dt2
。我打电话给它的Select
方法来获得一些特定的行。如何将DataTable.Select()结果传递给新的DataTable?
DataRow[] foundRows;
expression = "parent_id=1";
foundRows = dt2.Select(expression);
我怎样才能通过Select
- 方法结果到一个新的DataTable
- 说FilteredData
?
我有一个DataTable
用数据命名为dt2
。我打电话给它的Select
方法来获得一些特定的行。如何将DataTable.Select()结果传递给新的DataTable?
DataRow[] foundRows;
expression = "parent_id=1";
foundRows = dt2.Select(expression);
我怎样才能通过Select
- 方法结果到一个新的DataTable
- 说FilteredData
?
您可以使用CopyToDataTable
,可用IEnumerable<DataRow>
类型。
var filteredData = dt2.Select(expression).CopyToDataTable();
为什么不使用DataView
代替?
DataView view = new DataView(dt2);
view.RowFilter = "parent_id = 1";
DataView
将表现在大同小异的方式,一个DataTable
将与额外的好处,任何变化(S)的(在这种情况下dt2
)基本DataTable
会自动反映在DataView
。
为了清楚起见,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();
正是我在找的感谢 – DontFretBrett 2012-06-22 17:24:15