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

Posted jason-365

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分页之 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倍

以上是关于分页之 skip(pageindex*(index-1).take(size).Tolist();的主要内容,如果未能解决你的问题,请参考以下文章

AJAX分页带页码

五-分页之初识

MyBatis 分页之拦截器实现

MVC分页之MvcPager使用

[转]Oracle分页之二:自定义web分页控件的封装

关于Linq to Sql的分页