我想将DataRow
数组转换为DataTable
...最简单的方法是什么?
对于.Net Framework 3.5+
DataTable dt = new DataTable(); DataRow[] dr = dt.Select("Your string"); DataTable dt1 = dr.CopyToDataTable();
但是如果数组中没有行,则可能导致错误,例如source不包含DataRows.因此,如果您决定使用此方法CopyToDataTable()
,则应检查数组以确定它是否具有数据行.
if (dr.Length > 0) DataTable dt1 = dr.CopyToDataTable();
MSDN上提供的参考: DataTableExtensions.CopyToDataTable方法(IEnumerable)
为什么不通过你的DataRow数组进行迭代,并添加(使用DataRow.ImportRow,如果必要的话,得到的DataRow的副本),是这样的:
foreach (DataRow row in rowArray) { dataTable.ImportRow(row); }
确保您的dataTable与DataRow阵列中的DataRows具有相同的架构.
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());