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

问题描述

我是从一个表中选取数据存到一个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);}
解决方案十一:
这个你看我代码就知道我已经实现了,不过还是谢谢你哦。

时间: 2024-12-30 18:33:02

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

按概率随机选取

上一篇笔记的pygame游戏对敌人和白云的移动速度使用了随机函数randint(),游戏体验不是太好.如果是按概率随机选取设置速度的话,游戏体验会好一些. 据我了解,random.choice(seq)是等概率选取一个,不是我想要的.而 numpy.random.choice(seq, p, k)是按概率随机重复选取多个,这正是我想要的. 但是,我不想为这么一个函数引入巨大的numpy库,所以打算自己实现一个按概率随机选取的函数. 特此将代码记录如下: # 作者:hhh5460 # 时间:201

前端面试题:高效地随机选取数组中的元素

有前端题目大概是这样的:考虑到性能问题,如何快速从一个巨大的数组中随机获取部分元素. 比如有个数组有100K个元素,从中不重复随机选取10K个元素. 为了演示方便我们将数据简化,先给出方案最后再用大点的数据来测试性能的对比. 常规解法 常规做法倒也不难,生成一个0到数组长度减1的随机数,这个数也就是被选中元素在原数组中的下标,获得该元素后将值保存到另一个数组同时通过数组的splice方法将该元素从原数组中删除,以保证下次不会重复取到. 按以上思路,代码大概就是这样的: //元素总数,为了方便演示

MySQL随机选取数据

MySQ随机查询数据 以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩.他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.翻了手册,找到了下面这个语句,可以完成任务了. SELECT * FROM table_name ORDER BY rand() LIMIT 5; MySQL的rand()函数在手册里是这么说的: RAND() RAND(N) 返回在范围0到1.0内的随机浮点值.如果一个整数参数N被指定,它被用作种子值. 关于MySQL的rand()函数的效率问

php随机取mysql记录方法小结_php技巧

本文实例总结了php随机取mysql记录方法.分享给大家供大家参考.具体分析如下: 在php中要随机取mysql记录我们可以直接使用mysql_query来执行mysql中的select rand函数获取的数据并读出来,这里就来给大家简单介绍一下. 方法一,代码如下: 复制代码 代码如下: select * from tablename order by rand() limit 1 把 limit 后面的数值改为你想随机抽取的条数,这里只取一条. 方法二,代码如下: 复制代码 代码如下: $q

php随机取mysql记录方法示例

方法一:  代码如下 复制代码   select * from tablename order by rand() limit 1  把 limit 后面的数值改为你想随机抽取的条数,这里只取一条. 方法二:    代码如下 复制代码 $query= "SELECT count(*) as count FROM recommends"; .... $max_num = $row['count']; // 取记录总数 srand((double)microtime()*1000000);

简单高效:不重复随机读取数据库记录

数据|数据库|随机|重复 看到经常有人问这个问题.又到网上找了些看,觉得写得不满意.大多读取记录到数组里去抽取.昨天又看到人写,心血来潮就顺手想了个,个人认为这种方法应该错吧,呵呵.刚好20行-_-实现方法:1.通过recordset游标可移动的特性,在已打开记录集里移动到随机位置读取记录.而且可以将就使用页面中已打开的RS对象.2.将出现过的随机数保存到一个字符串中,通过instr函数来检查是否重复,重复则递归调用函数至不重复. 数据库打开查询若干,省略... ...Set rs = Serv

ASP.NET随机显示数据库记录

asp.net|数据|数据库|随机|显示 System名称空间有一个Random类,用来产生随机数.本文就介绍利用这个Random类来随机显示数据库记录.     Random类有一个重载方法叫Next,它可以产生随机数,它允许输入两个参数,以产生这两个数之间的随机数.例如:      Random R = new Random();   Random.Next(1,100);       将会在产生1-100之间的随机数.      要随机显示数据库记录,需要知道数据库最大记录数和最小记录数.

数据-ajax 根据一个下拉框的值的不同 另一个下拉框对应显示的值也不同

问题描述 ajax 根据一个下拉框的值的不同 另一个下拉框对应显示的值也不同 图片就是这样的,项目的类别有商户和银行两种,我要根据选择商户还是银行,让下边对应的选择已有商户 的下拉框中显示不同的数据,数据都需要通过后台去数据库里查的. 这个是不是要ajax啊?谁能告诉告诉我怎么写 .急急急 ..在线等好心人..... 解决方案 html代码 <tr> <td style="width:15%"> 一级 </td> <td style="

算法,PHP取数据库中百万条数据中随机20条记录

额,为什么要写这个? 在去某个公司面试时,让写个算法出来,当时就蒙了,我开发过程中用到算法的吗?又不是大数据开发,分析. 今天偶然想起来一个坑爹数据,如:PHP取百万条数据中随机20条记录,当时就用的算法. 1.先统计统计数据库多少条记录(这个做个数据缓存,如1小时重新统计一次), 2.根据总条数,随机1次,1次性取出20条记录(当然这个就相当于分页了,要求不高的话,这个最快,我用的就是这个): 还有一种方法,随机20次,重复执行20次. 例如: $sum=800000;//得到总条数 //循环