当前位置:编程学习 > C#/ASP.NET >>

如何从一个dataset里面随机选取若干条记录存到另一个dataset里面?

我是从一个表中选取数据存到一个dataset1中,然后如何从dataset中随机选取若干条记录放到dataset2中呢,然后每执行一次操作,就从dataset中删掉刚才从中抽取的dataset2中的所有记录,如何做呢?
protected void btn_Set_Click(object sender, EventArgs e)
        {
            try
            {
                string sql = "select FK_StatusInfo_Stu_ID,FK_CM_Class_Num from tbl_XJ_StuInfo";
                DataSet ds = Common.Query(sql);
                string sql1 = "select top 30 * from (select FK_StatusInfo_Stu_ID,FK_CM_Class_Num from tbl_XJ_StuInfo) as Temp order by newid() ";
                DataSet ds1 = Common.Query(sql1);
                Model.tbl_KW_StuExamID stuexam = new Model.tbl_KW_StuExamID();
                for (int i = 0; i < ds1.Tables[0].Rows.Count; i++)
                {
                    stuexam.StuID = ds1.Tables[0].Rows[i]["FK_StatusInfo_Stu_ID"].ToString();
                    string sql2 = "select Stu_Name from tbl_XJ_StatusInfo where Stu_ID='" + stuexam.StuID + "'";
                    DataSet ds2 = Common.Query(sql2);
                    stuexam.StuName = ds2.Tables[0].Rows[0]["Stu_Name"].ToString();
                    stuexam.ClassID = ds1.Tables[0].Rows[0]["FK_CM_Class_Num"].ToString();
                    stuexam.ExamRoomID = Drop_ExamRoomNum.SelectedValue;
                    stuexam.SeatID = (i + 1).ToString();
                    string roomNum = "";
                    string Seat = "";
                    if ((Drop_ExamRoomNum.SelectedValue.Length == 1) && (stuexam.SeatID.Length == 1))
                    {
                        roomNum = "0" + Drop_ExamRoomNum.SelectedValue;
                        Seat = "0" + stuexam.SeatID;
                        stuexam.ExamID = roomNum + Seat;
                    }
                    else
                    {
                        stuexam.ExamID = Drop_ExamRoomNum.SelectedValue + stuexam.SeatID;
                    }
                    new BLL.tbl_KW_StuExamID().Add(stuexam);
                }
                Response.Write("<script>alert('考场'+" + Drop_ExamRoomNum.SelectedValue + "+'分配成功!');</script>");


                DataView dvTable = new DataView(ds1.Tables[0]);
                dvTable.Sort = "FK_StatusInfo_Stu_ID";
                int temp = 0;
                while (temp<ds.Tables[0].Rows.Count)
                {
                    if (dvTable.Find(ds1.Tables[0].Rows[temp]["FK_StatusInfo_Stu_ID"]) > -1)
                    {
                        ds.Tables[0].Rows.Remove(ds.Tables[0].Rows[temp]);
                    }
                    else
                    {
                        temp++;
                    }
                }
            }
            catch
            {
                Response.Write("<script>alert('操作失败,请核实信息!');</script>");
            }
           
            
        } --------------------编程问答--------------------

 DataTable dt = new DataTable("Source");
        dt.Columns.Add("LONGITUDE", typeof(double));
        dt.Columns.Add("LATITUDE", typeof(double));
        dt.Columns.Add("GPSMILEAGE", typeof(float));
        dt.Columns.Add("ADDRESS", typeof(string));
        dt.Columns.Add("OFFSET_LAT", typeof(double));
        dt.Columns.Add("OFFSET_LNG", typeof(double));

        DataTable dt2 = dt.Clone();
        for (int i = 0; i < 20; i++)
        {
            DataRow dr = dt.NewRow();
            dr["LONGITUDE"] = 114.274178 + (i + 1) * 0.01;
            dr["LATITUDE"] = 30.673353 + (i + 1) * 0.02;
            dr["GPSMILEAGE"] = (i + 1) * 1000;
            if (i % 3 != 0)
            {
                dr["ADDRESS"] = Guid.NewGuid().ToString();
            }
            dr["OFFSET_LAT"] = i / 3 * 0.1;
            dr["OFFSET_LNG"] = i / 2 * 0.1;
            dt.Rows.Add(dr);
        }
        while (true)
        {
            Random random = new Random(DateTime.Now.Millisecond);
            if (dt.Rows.Count > 0)
            {
                int radNumber = random.Next(0, dt.Rows.Count);
                dt2.ImportRow(dt.Rows[radNumber]);
                dt.Rows[radNumber].Delete();
                dt.AcceptChanges();
            }
        }


看你咋随机的吧,上面是个测试 --------------------编程问答--------------------

 if (dt.Rows.Count > 0)
            {
                int radNumber = random.Next(0, dt.Rows.Count);
                dt2.ImportRow(dt.Rows[radNumber]);
                dt.Rows[radNumber].Delete();
                dt.AcceptChanges();
            }
            else
            {
                break;
            }

额,,忘了退出,写得急了。。 --------------------编程问答-------------------- 我是从一个表中选取数据存到一个dataset1中,然后如何从dataset中随机选取若干条记录放到dataset2中呢,然后每执行一次操作,就从dataset中删掉刚才从中抽取的dataset2中的所有记录,如何做呢?
--------------------编程问答-------------------- select top 30 * from   tbl_XJ_StuInfo  order by newid() 随机取了 --------------------编程问答-------------------- 不是从表里面去选取啊,是把全部数据取出来放到内存的虚拟表里面,然后在从虚拟表里面查找,再删除? --------------------编程问答-------------------- dataset中删掉刚才从中抽取的dataset2中的所有记录 
             foreach (DataRow dr in dataset2.Tables[0].Rows)
            {
                dataset.Tables[0].Rows.Remove(dr);
            } --------------------编程问答-------------------- 哎,不是这样的,这样虽然是删掉了。但是再次执行按钮事件时,刚开始得到sql语句又执行了一次,数据重新加载了一遍,又都到ds上了,你看我的代码啊 --------------------编程问答-------------------- dataset类中,肯能会提供这样的方法,你先去看下它提供了哪些方法再说 --------------------编程问答-------------------- new个新的dataset 专门用来存放已经被 选择掉的数据 
 
  dsTemp.Merge(dataset2); 
  foreach (DataRow dr in dsTemp.Tables[0].Rows)
  {
  dataset.Tables[0].Rows.Remove(dr);
  }
  --------------------编程问答-------------------- 这个你看我代码就知道我已经实现了,不过还是谢谢你哦。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,