データを含むdt2
という名前のDataTable
があります。 Select
メソッドを呼び出して、特定の行を取得しています。
DataRow[] foundRows;
expression = "parent_id=1";
foundRows = dt2.Select(expression);
Select
- methodの結果を新しいDataTable
– FilteredData
と言うにはどうすればよいですか?
CopyToDataTable
を使用できます。IEnumerable<DataRow>
タイプ。
var filteredData = dt2.Select(expression).CopyToDataTable();
代わりにDataView
を使用しないのはなぜですか?
DataView view = new DataView(dt2);
view.RowFilter = "parent_id = 1";
DataView
は、DataTable
が基本的なDataTable
(dt2
この場合)は、DataView
に自動的に反映されます。
わかりやすくするために、Select
メソッドはDataRow
型の配列を返します。そのため、CopyToDataTable()
を使用する必要があります。アレックスの答えは良いです。ただし、Select
が行を返さなかった場合、CopyToDataTable()
はInvalidOperationException
をスローします。
CopyToDataTable()
を使用する前に、少なくとも1つのDataRow
があることをテストしてください。
var filteredDataRows = dt2.Select(expression);
var filteredDataTable = new DataTable();
if(filteredDataRows.Length != 0)
filteredDataTable = filteredDataRows.CopyToDataTable();