码迷,mamicode.com
首页 > 其他好文 > 详细

LINQ分页工具

时间:2015-02-01 14:48:10      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;


/// <summary>
/// Page helper, default page size = 10
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="entity"></typeparam>
public class LinqPageHelper<T, entity> where T : IEnumerable<entity>
{
    T _collection;
    int _pageCount;
    int _pageSize;
    public static readonly int defaultPageSize = 10;

    /// <summary>
    /// Capacity of a single page
    /// </summary>
    public int PageSize
    {
        get { return _pageSize; }
        set
        {
            _pageSize = value;
            onPageSizeChanged();
        }
    }

    /// <summary>
    /// Total page count
    /// </summary>
    public int PageCount
    {
        get
        {
            return _pageCount;
        }
        set
        {
            _pageCount = value;
        }
    }

    /// <summary>
    /// Total count
    /// </summary>
    public int Count
    {
        get { return _collection.Count(); }
    }



    private LinqPageHelper()
    {
    }

    public LinqPageHelper(T t)
        : this(t, defaultPageSize)
    {

    }

    public LinqPageHelper(T t, int pageSize)
    {
        _collection = t;
        _pageSize = pageSize;
        onPageSizeChanged();
    }


    private void onPageSizeChanged()
    {
        _pageCount = (_collection.Count() - 1 + _pageSize) / _pageSize;
    }

    public IEnumerable<entity> Take(int currentPage)
    {
        if (currentPage <= 0 || currentPage > PageCount)
        {
            return null;
        }

        var query =
            _collection.Take(_pageSize * currentPage).Skip(_pageSize * (currentPage - 1));
        return query;
    }

    public bool IsLastPage(int currentPage)
    {
        return currentPage == _pageCount;
    }
}

 

eg.

            LinqPageHelper<IEnumerable<DataEntity>, DataEntity> helper =
                new LinqPageHelper<IEnumerable<DataEntity>, DataEntity>(list);
            helper.PageSize = pageSize;
            var result = helper.Take(currentPage);

 

LINQ分页工具

标签:

原文地址:http://www.cnblogs.com/wsion/p/4265471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!