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

sha*_*jan 27 .net c# datatable

我有一个数据DataTable命名dt2.我正在调用它的Select方法来获取一些特定的行.

DataRow[] foundRows;

expression = "parent_id=1";

foundRows = dt2.Select(expression);
Run Code Online (Sandbox Code Playgroud)

如何将Select-method结果传递给新的DataTable- 比如说FilteredData

Ale*_*ini 60

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

var filteredData = dt2.Select(expression).CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)


ard*_*ila 14

为什么不用一个DataView呢?

DataView view = new DataView(dt2);
view.RowFilter = "parent_id = 1";
Run Code Online (Sandbox Code Playgroud)

DataView将表现得非常像一个DataTable具有额外好处的方式,即对底层的任何改变DataTable(dt2在这种情况下)将自动反映在DataView.


mmc*_*fly 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();
Run Code Online (Sandbox Code Playgroud)