问题描述
我是从一个表中选取数据存到一个dataset1中,然后如何从dataset中随机选取若干条记录放到dataset2中呢,然后每执行一次操作,就从dataset中删掉刚才从中抽取的dataset2中的所有记录,如何做呢?protectedvoidbtn_Set_Click(objectsender,EventArgse){try{stringsql="selectFK_StatusInfo_Stu_ID,FK_CM_Class_Numfromtbl_XJ_StuInfo";DataSetds=Common.Query(sql);stringsql1="selecttop30*from(selectFK_StatusInfo_Stu_ID,FK_CM_Class_Numfromtbl_XJ_StuInfo)asTemporderbynewid()";DataSetds1=Common.Query(sql1);Model.tbl_KW_StuExamIDstuexam=newModel.tbl_KW_StuExamID();for(inti=0;i<ds1.Tables[0].Rows.Count;i++){stuexam.StuID=ds1.Tables[0].Rows[i]["FK_StatusInfo_Stu_ID"].ToString();stringsql2="selectStu_Namefromtbl_XJ_StatusInfowhereStu_ID='"+stuexam.StuID+"'";DataSetds2=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();stringroomNum="";stringSeat="";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;}newBLL.tbl_KW_StuExamID().Add(stuexam);}Response.Write("<script>alert('考场'+"+Drop_ExamRoomNum.SelectedValue+"+'分配成功!');</script>");DataViewdvTable=newDataView(ds1.Tables[0]);dvTable.Sort="FK_StatusInfo_Stu_ID";inttemp=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>");}}
解决方案
解决方案二:
DataTabledt=newDataTable("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));DataTabledt2=dt.Clone();for(inti=0;i<20;i++){DataRowdr=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){Randomrandom=newRandom(DateTime.Now.Millisecond);if(dt.Rows.Count>0){intradNumber=random.Next(0,dt.Rows.Count);dt2.ImportRow(dt.Rows[radNumber]);dt.Rows[radNumber].Delete();dt.AcceptChanges();}}
看你咋随机的吧,上面是个测试
解决方案三:
if(dt.Rows.Count>0){intradNumber=random.Next(0,dt.Rows.Count);dt2.ImportRow(dt.Rows[radNumber]);dt.Rows[radNumber].Delete();dt.AcceptChanges();}else{break;}
额,,忘了退出,写得急了。。
解决方案四:
我是从一个表中选取数据存到一个dataset1中,然后如何从dataset中随机选取若干条记录放到dataset2中呢,然后每执行一次操作,就从dataset中删掉刚才从中抽取的dataset2中的所有记录,如何做呢?
解决方案五:
selecttop30*fromtbl_XJ_StuInfoorderbynewid()随机取了
解决方案六:
不是从表里面去选取啊,是把全部数据取出来放到内存的虚拟表里面,然后在从虚拟表里面查找,再删除?
解决方案七:
dataset中删掉刚才从中抽取的dataset2中的所有记录foreach(DataRowdrindataset2.Tables[0].Rows){dataset.Tables[0].Rows.Remove(dr);}
解决方案八:
哎,不是这样的,这样虽然是删掉了。但是再次执行按钮事件时,刚开始得到sql语句又执行了一次,数据重新加载了一遍,又都到ds上了,你看我的代码啊
解决方案九:
dataset类中,肯能会提供这样的方法,你先去看下它提供了哪些方法再说
解决方案十:
new个新的dataset专门用来存放已经被选择掉的数据dsTemp.Merge(dataset2);foreach(DataRowdrindsTemp.Tables[0].Rows){dataset.Tables[0].Rows.Remove(dr);}
解决方案十一:
这个你看我代码就知道我已经实现了,不过还是谢谢你哦。