Ответ 1
Вы можете использовать CopyToDataTable
, доступный в типах IEnumerable<DataRow>
.
var filteredData = dt2.Select(expression).CopyToDataTable();
У меня есть DataTable
с именем dt2
с данными. Я вызываю его метод Select
для получения определенных строк.
DataRow[] foundRows;
expression = "parent_id=1";
foundRows = dt2.Select(expression);
Как передать результат Select
-method в новый DataTable
- say 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()
, по крайней мере один DataRow
.
var filteredDataRows = dt2.Select(expression);
var filteredDataTable = new DataTable();
if(filteredDataRows.Length != 0)
filteredDataTable = filteredDataRows.CopyToDataTable();