首页 新闻 会员 周边 捐助

不用sql语句怎么进行分页

0
悬赏园豆:5 [已解决问题] 解决于 2012-04-17 13:06

不用sql语句怎么进行分页

程旭媛的主页 程旭媛 | 初学一级 | 园豆:79
提问于:2012-04-12 12:23
< >
分享
最佳答案
0

使用linq的skip take还是比较方便的。

收获园豆:5
lucika.zh | 初学一级 |园豆:54 | 2012-04-12 20:39
其他回答(4)
0

不知道你想问什么?描述清楚点

玉开 | 园豆:8822 (大侠五级) | 2012-04-12 12:48

由于显示页面的数据量比较大,所以要在显示页面进行分页查询。只不过一般的分页查询语句都是通过SQL语句进行处理的,然后在服务端进行传参就可以啦。但是我写的显示页面的数据是通过sql查询出来进行处理后显示的数据,所以分页的语句不好在sql中进行处理,我数据层中查询出来的结果是Dictionary<string, Dictionary<string, int>>集合,那么我在服务端要怎么进行处理,使其进行分页。求帮助,急急急。谢谢啦。

支持(0) 反对(0) 程旭媛 | 园豆:79 (初学一级) | 2012-04-12 12:56

@好闻?: 

一共有5000条记录,每页50条记录;那么第2页的记录必然是第51到第100的数据,根据索引把数据过滤出来,显示到页面上就可以了。

支持(0) 反对(0) 玉开 | 园豆:8822 (大侠五级) | 2012-04-12 13:01

@玉开: Dictionary<string, Dictionary<string, int>>集合中的键是在数据库中查询出来的,所以不好查数据,这个清楚,可就是不知道具体怎么去写,有demo就更好啦。

支持(0) 反对(0) 程旭媛 | 园豆:79 (初学一级) | 2012-04-12 13:05
0

你用的是Webform还是MVC

changwei0708 | 园豆:54 (初学一级) | 2012-04-12 13:33

ASP

支持(0) 反对(0) 程旭媛 | 园豆:79 (初学一级) | 2012-04-12 13:34
2

这个你可以过滤啊。

你的希望应该是:有一个5000条记录的集合,希望能从指定位置开始获取指定数量的一个连续的子集吧?

如果你用LinQ可以使用下面的代码

public IEnumable GetData(IEnumable source, int startIndex, int size)
{
    return source.Skip(startIndex).Take(size);
}

如果你用的不是LinQ,那么:

public IEnumable GetData(IEnumable source, int startIndex, int size)
{
    int index = 0;
    foreach(var item in source)
    {
        if(index < startIndex)
        {
            continue;
        }
        if(index - startIndex > size)
        {
            break;
        }
        yield return item;
}

当然,上面的枚举方法不是很好,不过,一般的情况下,你的集合应该能确定类型,比如是LIST或ARRAY等,也就是说能进行下标索引的,此时就更简单了,下面的代码就用数组来实现:

public IEnumable GetData(object[] source, int startIndex, int size)
{
    for(int i = startIndex; i < startIndex + size && i < source.Length; i++)
    {
        yield return source[i];
    }
}
无之无 | 园豆:5095 (大侠五级) | 2012-04-12 13:54
0

asp 还是asp.net  

要是.net的话 推荐个控件 AspNetPager分页控件

Fishboy | 园豆:244 (菜鸟二级) | 2012-04-13 18:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册