实际开发中往往需要把一个dataTable中的数据根据条件过滤,然后把新数据赋给另外一张表(即返回过滤后的数据),
比如:有一个datatable dt;另一个datatable dt1;
DataRow dr=dt.select("id=1");
然后
dt1.Rows.Add(dr[0]);
但是这时会提示错误信息:这一行数据已经属于其他表,本节内容就是讲解如何把一个dataTable中的数据赋给新的dataTable
代码如下:
/// <summary> /// 执行DataTable中的查询返回新的DataTable /// </summary> /// <param name="dt">源数据DataTable</param> /// <param name="condition">查询条件</param> /// <returns></returns> public static DataTable GetNewDataTable(DataTable dt, string condition) { DataTable newdt = new DataTable(); try { newdt = dt.Clone(); DataRow[] dr = dt.Select(condition); // 克隆dt的结构,包括所有dt架构和约束,并无数据 for (int i = 0; i < dr.Length; i++) { newdt.ImportRow((DataRow)dr[i]); } return newdt;//返回的查询结果 } catch (Exception ex) { MessageBox.Show(ex.Message); return newdt; } }
其中 newdt.ImportRow((DataRow)dr[i]); 也可以换成newdt.Rows.Add(dr[i].ItemArray);