如何从一个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