首页 新闻 会员 周边 捐助

dataset与数组的转换

0
悬赏园豆:5 [待解决问题]

我现在是得到了一个数据集,这个数据集中只有一个id的字段,我想把这个数据集转到一个数组中,然后使用随机函数生成一个随机的id的列表,这个要怎样实现啊,请高手指点迷津。

select id from table1 ;

dataset ds=new ds;

ds,这个数据集只有id一个字段,怎样从这个数据集中得到一个随机的id的集合,需要转换成数组吗(转换成数组,在使用随机函数得到一个随机的id的列表吗)?要是得转换成数组的话,应该怎样实现?

如果不转换数组的话,又该怎么实现呢?

kdkler的主页 kdkler | 初学一级 | 园豆:154
提问于:2010-11-17 22:27
< >
分享
所有回答(4)
0

就你这个问题,如果不转换数组,我倒是有两个办法:

一、存储过程:

使用存储过程获得个体某一行数据

二、使用单一的sql语句:

简单的思想就是:获得一个随机数n,取出前n条记录但不在前n-1条内,我们得到的就是第n条记录了

①首先获得你这个dataset中的最大行数,根据这个最大行数来生成一个随机数

②根据随机数来拼sql语句:select top 5 id from table1 where not exists (select top 4 id from table1)

这样我们就获得了一个id (这其中的5是随机生成的数字,而4是通过5-1得到的数字)

可以一试,但是如果是大规模系统建议用第一种!

Tester Chen | 园豆:1690 (小虾三级) | 2010-11-18 08:50
0

dataset你也可以当数组来用啊,本身也没什么区别吧。

然后你用随机函数生成index,再取值不就是一个随机的id集合了吗?

茂茂 | 园豆:2894 (老鸟四级) | 2010-11-18 09:16
dataset可以当数组来用吗?如果是这样是不是直接可以用dataset生成随机的试题编号呢?如果这样可以的话,那就好办了,可是用代码要怎样实现从dataset中获得那个随机的试题编号呢?在线等……
支持(0) 反对(0) kdkler | 园豆:154 (初学一级) | 2010-11-19 16:52
0

DataSet 只能添加 DataTable 和建立表之间的关系。DataTable 才支持你想要的操作。

HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-11-18 09:45
0

1.先获取ds中的数据的最大索引值(maxIndex),和数据条数(count);

2.声明一个数组 int[] list=new Int[count];

3.使用一个For循环 :for(int i=0;i<count; i++){}

4.在循环内部用 int index = new Random().Next(0,maxIndex); 获取随机的索引值

5.然后获取随机的数据添加到List数组中: list[i]=ds.table[0].[index];

6.循环结束后list数组中的数据就是你想要的。

Michelle 米雪儿 | 园豆:209 (菜鸟二级) | 2010-11-18 11:09
这是最笨的办法吧!上面的方法有点问题:1.产生的随机数要先保存在另一个数组里面,为了保证产生的随机数不重复,每次产生的随机数都要判断是否在这个数组里存在;2. 要用while 循环或do while 循环,条件是产生的不重复的随机数的个数小于数据条数。
支持(0) 反对(0) Michelle 米雪儿 | 园豆:209 (菜鸟二级) | 2010-11-18 11:40
ds.Tables[0].Rows[index]; 是个不错的办法
支持(0) 反对(0) Tester Chen | 园豆:1690 (小虾三级) | 2010-11-18 12:09
最大索引值(maxIndex)是指的什么?是数据表中最后的一条数据吗?(如果id是自动增量的话,最大的那个id是不上就是那个最大索引值(maxIndex))?
支持(0) 反对(0) kdkler | 园豆:154 (初学一级) | 2010-11-19 17:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册