Подтвердить что ты не робот

Как передать результат DataTable.Select() в новый DataTable?

У меня есть DataTable с именем dt2 с данными. Я вызываю его метод Select для получения определенных строк.

DataRow[] foundRows;

expression = "parent_id=1";

foundRows = dt2.Select(expression);

Как передать результат Select -method в новый DataTable - say FilteredData?

4b9b3361

Ответ 1

Вы можете использовать CopyToDataTable, доступный в типах IEnumerable<DataRow>.

var filteredData = dt2.Select(expression).CopyToDataTable();

Ответ 2

Почему бы не использовать DataView вместо этого?

DataView view = new DataView(dt2);
view.RowFilter = "parent_id = 1";

DataView будет вести себя очень точно так же, как если бы DataTable с добавленной выгодой, что любые изменения в базовом DataTable (dt2 в этом случае) автоматически отражались бы в DataView.

Ответ 3

Просто для ясности метод Select возвращает массив типа DataRow. Поэтому нам нужно использовать CopyToDataTable(). Алекс отвечает хорошо. Однако, если Select не вернул строки, CopyToDataTable() выкинет InvalidOperationException.

Итак, проверьте, что перед тем, как использовать CopyToDataTable(), по крайней мере один DataRow.

var filteredDataRows = dt2.Select(expression);

var filteredDataTable = new DataTable();

if(filteredDataRows.Length != 0)
    filteredDataTable = filteredDataRows.CopyToDataTable();