DataSet dataset1,dataset2;Reservoir.BLL.Userinfo uerinfo=new Reservoir.BLL.Userinfo();
dataset1=uerinfo.GetList("");

Reservoir.BLL.Area area=new Reservoir.BLL.Area();
dataset2=area.GetList("");两个都返回dataset,现在的问题是.dataset1中的USER_AREA=dataset2中的id
关联后,把datase1中的USER_DEPT 和dataset2中的mc 组合起来,成一个dataset 如何写条件??
如果解决,就马上接贴了...

解决方案 »

  1.   

    先遍历DataSet1
    取得USER_AREA到字符串strUserArea
    DataSet2.Select("USER_AREA='"+strUserArea+"'")
    如果得到的表数据为0 跳过
    如果>0则做合并操作
      

  2.   

    try..DataTable.Select();MSDN:ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref4/html/O_T_System_Data_DataTable_Select.htm
      

  3.   

    try{
    //准备DataSet1
    DataTable dt1=new DataTable();
    dt1.Columns.Add("USER_AREA",typeof(int));
    dt1.Columns.Add("USER_DEPT",typeof(string));
    dt1.Rows.Add(1,"部门吗?");
    dt1.Rows.Add(2,"应该是有");
    DataSet ds1=new DataSet();
    ds1.Tables.Add(dt1);
        //准备DataSet2
        DataTable dt2=new DataTable();
    dt2.Columns.Add("id",typeof(int));
    dt2.Columns.Add("mc",typeof(string));
    dt2.Rows.Add(1,"我们假设是一对多的关系");
    dt2.Rows.Add(1,"其它的也可以自己扩展");
    dt2.Rows.Add(2,"这个字段不知道是什么意思");
    DataSet ds2=new DataSet();
    ds2.Tables.Add(dt2);
    //现在我们不用表了只用dataSet来接作,我们需要一个新的表来存放新的数据
    DataTable dt3=new DataTable();
    dt3.Columns.Add("id",typeof(int));
    dt3.Columns.Add("USER_DEPT",typeof(string));
    dt3.Columns.Add("mc",typeof(string));

    //来两个视图先
    DataView dv1 =ds1.Tables[0].DefaultView;
    foreach(DataRowView drv1 in  dv1){
       DataView dv2=new DataView(ds2.Tables[0],
       String.Format("id={0}",drv1["USER_AREA"]),
       String.Empty,
       DataViewRowState.CurrentRows);
           foreach(DataRowView drv2 in dv2){
        dt3.Rows.Add(drv2["id"],drv1["USER_DEPT"],drv2["mc"]);
       }
    }
        
    //显示
    foreach(DataRow dr in dt3.Rows){
     Console.WriteLine("id:{0}USER_DEPT:{1}MC:{2}",dr[0],dr[1],dr[2]);
    }



    Console.WriteLine("end");
    }
    catch(Exception e){
    Console.WriteLine(e.ToString());
    }
      

  4.   

    写了个小例子,不知道是不是这个意思?        static void Main(string[] args)
            {
                //生成两个DataSet作为测试
                SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
                SqlDataAdapter sda1 = new SqlDataAdapter("select sno,sname from studentDetails", con);
                SqlDataAdapter sda2 = new SqlDataAdapter("select sno,sage from studentDetails", con);
                DataSet ds1 = new DataSet();
                DataSet ds2 = new DataSet();
                sda1.Fill(ds1, "student1");
                sda2.Fill(ds2, "student2");            //定义一个DataTable
                DataTable dt = new DataTable("student");
                DataColumn colume = new DataColumn();
                colume.DataType = Type.GetType("System.String");
                colume.ColumnName = "Name";
                dt.Columns.Add(colume);            colume = new DataColumn();
                colume.DataType = Type.GetType("System.Int32");
                colume.ColumnName = "Age";
                dt.Columns.Add(colume);            //遍历
                foreach (DataRow row1 in ds1.Tables["student1"].Rows)
                {
                    DataRow[] rows = ds2.Tables["student2"].Select("sno=" + row1["sno"].ToString());
                    if (rows.Length > 0)
                    {
                        DataRow row = dt.NewRow();
                        row["Name"] = row1["sname"];
                        row["Age"] = rows[0]["sage"];
                        dt.Rows.Add(row);
                    }
                }            //测试
                foreach (DataRow row in dt.Rows)
                {
                    Console.WriteLine(row["Name"].ToString() + "\t" + row["Age"].ToString());
                }
            }
      

  5.   

    说明一下:studentDetails表有三个字段,分别为sno,sname,sageds1存储sno,sname
    ds2存储sno,sage然后根据sno作查询,得到sname和sage存储到新建的DataTable中..