Простой способ преобразования массива datarow в datatable
Я хочу конвертировать a DataRow
для проживания в DataTable
... Каков самый простой способ сделать это?
13 ответов:
почему бы не перебрать массив DataRow и добавить (с помощью DataRow.ImportRow, если необходимо, чтобы получить копию DataRow), что-то вроде:
foreach (DataRow row in rowArray) { dataTable.ImportRow(row); }
убедитесь, что ваш dataTable имеет ту же схему, что и DataRows в массиве DataRow.
Для .Net Framework 3.5+
DataTable dt = new DataTable(); DataRow[] dr = dt.Select("Your string"); DataTable dt1 = dr.CopyToDataTable();
но если в массиве нет строк, это может привести к ошибкам, таким как источник не содержит данных. Поэтому, если вы решите использовать этот метод
CopyToDataTable()
, вы должны проверить массив, чтобы знать, что он имеет datarows или нет.if (dr.Length > 0) DataTable dt1 = dr.CopyToDataTable();
ссылка доступна на MSDN: DataTableExtensions.Метод CopyToDataTable (IEnumerable)
DataTable dt = new DataTable(); DataRow[] dr = (DataTable)dsData.Tables[0].Select("Some Criteria"); dt.Rows.Add(dr);
другой способ-использовать DataView
// Create a DataTable DataTable table = new DataTable() ... // Filter and Sort expressions string expression = "[Birth Year] >= 1983"; string sortOrder = "[Birth Year] ASC"; // Create a DataView using the table as its source and the filter and sort expressions DataView dv = new DataView(table, expression, sortOrder, DataViewRowState.CurrentRows); // Convert the DataView to a DataTable DataTable new_table = dv.ToTable("NewTableName");
простой способ это:
// dtData is DataTable that contain data DataTable dt = dtData.Select("Condition=1").CopyToDataTable(); // or existing typed DataTable dt dt.Merge(dtData.Select("Condition=1").CopyToDataTable());
вот решение. Он должен работать нормально.
DataTable dt = new DataTable(); dt = dsData.Tables[0].Clone(); DataRows[] drResults = dsData.Tables[0].Select("ColName = 'criteria'); foreach(DataRow dr in drResults) { object[] row = dr.ItemArray; dt.Rows.Add(row); }
упаковать кто-нибудь нуждается в нем VB.NET:
Dim dataRow as DataRow Dim yourNewDataTable as new datatable For Each dataRow In yourArray yourNewDataTable.ImportRow(dataRow) Next
.Net 3.5 + добавлены DataTableExtensions, используйте DataTableExtensions.Способ CopyToDataTable
для массива datarow просто используйте .CopyToDataTable () и он вернет datatable.
для одного datarow использовать
new DataRow[] { myDataRow }.CopyToDataTable()
вы можете использовать систему.Linq вот так:
if (dataRows != null && dataRows.Length > 0) { dataTable = dataRows.AsEnumerable().CopyToDataTable(); }