分页之 skip(pageindex*(index-1).take(size).Tolist();

grdView.DataSource = Select().Skip(pageSize * (start - 1)).Take(rows).ToList();
这个分页性能上并不高
下面是我的分页


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

public static IList<T> PaginationDataSource<T>(IList<T> list, int pageIndex, int pageSize, out int totals)

        {

            totals = 0;

            if (pageIndex < 0)

                throw new ArgumentException("pageIndex必须大于0");

            if (pageSize <= 0)

                throw new ArgumentException("pageSize必须大于0");

            totals = list.Count;

            int rowBegin = (pageIndex - 1) * pageSize >= totals ? 0 : (pageIndex - 1) * pageSize;

            int rowEnd = rowBegin + pageSize - 1 >= totals ? totals : rowBegin + pageSize - 1;

            IList<T> result = new List<T>();

            for (int i = rowBegin; i < rowEnd; i++)

            {

                result.Add(list[i]);

            }

            return result;

        }

经测试 
我的方法大概 0.000061
Linq 的 skip take 0.000561
比我的方法 慢10倍

原文地址:https://www.cnblogs.com/Jason-365/p/8191199.html

时间: 2024-10-12 02:52:39

分页之 skip(pageindex*(index-1).take(size).Tolist();的相关文章

Webform 翻页查询.最主要理解这一句代码 return _Context.ChinaStates.Skip((nowpage - 1) * numbers).Take(numbers).ToList();

查询里的方法 using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// CarBF 的摘要说明 /// </summary> public class CarBF { private DataClassesDataContext _Context; public CarBF() { _Context = new DataClassesD

js 前端分页空间控件

现在web注重用户体验与交互性,ajax 提交数据的方式很早就流行了,它能够在不刷新网页的情况下局部刷新数据.前端分页多是用ajax请求数据(其他方式也有比如手动构造表单模拟提交事件等).通过js将查询参数构造好发向后台,后台处理后以特定的格式返回,多为json,比较流行处理起来也很方便.当后台数据到达后,浏览器重新渲染界面当然也包括js分页控件,如果觉得每次绘制分页控件对前端性能有影响也可以不绘制,但实现起来相对麻烦. 本人写的分页控件参考了其他网友的代码,链接忘了,控件接受四个参数或一个对象

MVC 分页插件+ajax分页

分页样式插件http://www.jq22.com/plugin/2705 前台引用: 1 <script src="~/kkpager/lib/jquery-1.8.2.min.js"></script> 2 <script src="~/kkpager/src/kkpager.js"></script> 3 <link href="~/kkpager/src/kkpager_blue.css&quo

knockout 分页 Demo +mvc+bootstrap

最近工作中web客户端需要用到knockout,在此记录下一些Demo,以后用到的时候查找起来方便.也希望给新入门的knockout使用者一点经验.knockout官方文档.这儿是一个使用knockout分页的小demo,使用的框架是mvc,javascript框架有jquery,knockout,bootstrap. 先上效果图  前台view 1 @{ 2 //这儿去除该页面的模板页.防止jquery多次引用,当然也可以不去除,下面jquery就可以不用引用了. 3 4 Layout = n

【菜鸟看框架】——MVC+EF实现分页

引言 分页这个名词对于现在的我们来说已经非常的熟悉,因为我知道了为什么我会在显示数 据的时候采用分页的形式,有人说为了显示的美观,有的人说为了在众多的数据中能容 易的找到我们想要的数据等等,这些都是其中的一些原因,但是这些东西我们完全可以 用VS自带的控件来实现,也就是所以的假分页,那么假分页和真分页的本质是什么呢? 假分页是一次性把所要的数据全部在数据库中查询出来,只是在显示的时候分页显示罢 了,这样显然是非常影响性能的,而真分页是每次取每页的数据条数,这样在大数据的 时候就能体现出了它的优势

Mvc Linq 分页 参考PagedList

第一次写博客 写的不好各位大神多多包涵. 我的分页主要是针对Linq 分页来写的,针对IEnumerable<T>  和 IQueryable<T> 类型数据分页. 开始上代码 创建接口: public interface IPagedList { /// <summary> /// 总记录数 /// </summary> int TotalCount { get; set; } /// <summary> /// 总页数 /// </su

AspNetPager分页控件的使用方法

1. 首先将AspNetPager.dll复制于应用程序下的bin目录,打开解决方案,引入dll文件 (通过NuGet获取) 2. 在工具栏中添加控件,这样可以支持拖拽使用 3.页面拖入分页控件,设置基本样式(建议跟repeater控件绑定) <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %> <webdiye

MVC分页技术

这个是用的插件分页技术 前台引用和js <script type="text/javascript" src="/js/jquery-1.10.2.min.js"></script> <script type="text/javascript" src="/js/kkpager.min.js"></script> <link rel="stylesheet&quo

wpf listbox分页

List<ListBoxItem> llb;//符合条件像的listbox数据集合 public static List<ModelDataBase> datalist = new List<ModelDataBase>();//总的数据源 int pageIndex = 1;//当前页 int pageSize = 16;//一页最大容量 int totalPage = 0;//总页数 public void TakePage() { tbindex.Text = p