网上有很多说的,试过,都没用。自己研究了一下,解决方案如下:
建立dataview,用dv.rowfilter,就可以取到了,然后TOTABLE即可。
代码如下:(只看中间那几句即可)
private void CreatTable(DataSet dsAll)
{
DataTable dtXH = new DataTable();
dtXH.Columns.AddRange(new DataColumn[] { new DataColumn("xh_id", typeof(System.String)), new DataColumn("a", typeof(System.String)) });
DataTable dtGfr = new DataTable();
dtGfr.Columns.AddRange(new DataColumn[] { new DataColumn("xh_id", typeof(System.String)), new DataColumn("gfr", typeof(System.String)), new DataColumn("gfrsbh", typeof(System.String)) }); if (dsAll.Tables.Count > )
{
DataTable dtitem = dsAll.Tables["item"];
DataRow[] dritems = dtitem.Select("xh_id<>''");
foreach (DataRow dr in dritems)
{
DataRow drXH = dtXH.NewRow();
drXH["xh_id"] = dr["xh_id"];
drXH["a"] = dr["a"];
dtXH.Rows.Add(drXH);
}
DataTable dtChild = dsAll.Tables["aChild"];
//解决方案:建立dataview,用dv.rowfilter,就可以取到了
DataView dv = dtitem.DefaultView;
foreach (DataRow dr in dtChild.Rows)
{
int itemid = Int32.Parse(dr["item_id"].ToString());
int aChildid = Int32.Parse(dr["aChild_id"].ToString());
string xh_id = ""; dv.RowFilter = string.Format("item_Id = {0}", itemid);
DataTable dttt = dv.ToTable();
//这么是查不到的
//DataRow[] drxhid = dtitem.Select(dv.RowFilter);
//if (drxhid.Length > 0)
//{
// xh_id = ((DataRow)drxhid[0])["xh_id"].ToString();
//}
if (dttt.Rows.Count > )
{
xh_id = dttt.Rows[]["xh_id"].ToString();
}
DataRow[] drChilds = dtitem.Select("aChild_id='" + aChildid + "'");
foreach (DataRow drChild in drChilds)
{
DataRow drgfr = dtGfr.NewRow();
drgfr["xh_id"] = xh_id;
drgfr["gfr"] = drChild["gfr"].ToString();
drgfr["gfrsbh"] = drChild["gfrsbh"].ToString();
dtGfr.Rows.Add(drgfr);
}
}
}
}
希望对大家有所帮助!