c# - name - Manera simple de convertir datarow array a datatable
get field from datarow c# (12)
¿Por qué no iterar a través de su matriz DataRow y agregar (utilizando DataRow.ImportRow, si es necesario, para obtener una copia de DataRow), algo así como:
foreach (DataRow row in rowArray) {
dataTable.ImportRow(row);
}
Asegúrese de que su dataTable tenga el mismo esquema que DataRows en su matriz DataRow.
Quiero convertir una matriz DataRow
en DataTable
... ¿Cuál es la forma más sencilla de hacer esto?
.Net 3.5+ agregó DataTableExtensions, use el método DataTableExtensions.CopyToDataTable
Para la matriz de datos simplemente use .CopyToDataTable () y devolverá la tabla de datos.
Para un solo uso de datarow
new DataRow[] { myDataRow }.CopyToDataTable()
Aquí está la solución. Debería funcionar bien.
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);
}
En caso de que alguien lo necesite en VB.NET:
Dim dataRow as DataRow
Dim yourNewDataTable as new datatable
For Each dataRow In yourArray
yourNewDataTable.ImportRow(dataRow)
Next
Otra forma es usar un 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");
Puede usar System.Linq de esta manera:
if (dataRows != null && dataRows.Length > 0)
{
dataTable = dataRows.AsEnumerable().CopyToDataTable();
}
La manera simple es:
// 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());
Para .Net Framework 3.5+
DataTable dt = new DataTable();
DataRow[] dr = dt.Select("Your string");
DataTable dt1 = dr.CopyToDataTable();
Pero si no hay filas en la matriz, puede causar los errores, como La fuente no contiene DataRows . Por lo tanto, si decide usar este método CopyToDataTable()
, debe verificar la matriz para saber si tiene datarows o no.
if (dr.Length > 0)
DataTable dt1 = dr.CopyToDataTable();
Referencia disponible en MSDN: Método DataTableExtensions.CopyToDataTable (IEnumerable)
DataTable dataTable = new DataTable();
dataTable = OldDataTable.Tables[0].Clone();
foreach(DataRow dr in RowData.Tables[0].Rows)
{
DataRow AddNewRow = dataTable.AddNewRow();
AddNewRow.ItemArray = dr.ItemArray;
dataTable.Rows.Add(AddNewRow);
}
DataTable dt = myDataRowCollection.CopyToDataTable<DataRow>();
DataTable dt = new DataTable();
foreach (DataRow dr in drResults)
{
dt.ImportRow(dr);
}
DataTable dt = new DataTable();
DataRow[] dr = (DataTable)dsData.Tables[0].Select("Some Criteria");
dt.Rows.Add(dr);