使用linq的skip take还是比较方便的。
不知道你想问什么?描述清楚点
由于显示页面的数据量比较大,所以要在显示页面进行分页查询。只不过一般的分页查询语句都是通过SQL语句进行处理的,然后在服务端进行传参就可以啦。但是我写的显示页面的数据是通过sql查询出来进行处理后显示的数据,所以分页的语句不好在sql中进行处理,我数据层中查询出来的结果是Dictionary<string, Dictionary<string, int>>集合,那么我在服务端要怎么进行处理,使其进行分页。求帮助,急急急。谢谢啦。
@好闻?:
一共有5000条记录,每页50条记录;那么第2页的记录必然是第51到第100的数据,根据索引把数据过滤出来,显示到页面上就可以了。
@玉开: Dictionary<string, Dictionary<string, int>>集合中的键是在数据库中查询出来的,所以不好查数据,这个清楚,可就是不知道具体怎么去写,有demo就更好啦。
你用的是Webform还是MVC
ASP
这个你可以过滤啊。
你的希望应该是:有一个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]; } }
asp 还是asp.net
要是.net的话 推荐个控件 AspNetPager分页控件