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)