LINQ分页工具

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);
时间: 2024-10-10 03:34:16

LINQ分页工具的相关文章

c#分页工具类,完美实现List分页

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ProjectProgress.BLL { /// <summary> /// 分页工具类 /// </summary> /// <typeparam name="T"></typeparam> public class PagingUtil<T

Linq分页

/// <summary> /// Linq分页 /// </summary> int pagesize = 2;//每页条数 int recordcount = 0;//总条数 int pageindex = 1;//当前第几页 public static string con = ConfigurationManager.ConnectionStrings["MySQLDBConnectionString"].ConnectionString; GuestB

Javascrpt 分页工具

title: The following iterative sequence is defined for the set of positive integers: n n/2 (n is even) n 3n + 1 (n is odd) Using the rule above and starting with 13, we generate the following sequence: 13 40 20 10 5 16 8 4 2 1 It can be seen that thi

sql转Linq的工具

本文转载:http://www.cnblogs.com/huangxincheng/archive/2011/05/12/2044990.html 介绍一个小工具 Linqer 这些天写Linq挺烦人的,就上网搜搜可有什么好的sql转Linq的工具,咦,马上就看上了Linqer. 哈哈,介绍一下使用方法吧: 官方下载网站:http://sqltolinq.com/download. 第一步:运行这个神马文件. 第二步:指定一个路径给它.他会生成一个Linqer.exe可运行的文件. 第三步:运行

Linq 分页不可缺少的两个方法

//LINQ分页的方法 //1.获取总页数 public int GetPageCount(int pageSize)//pageSize是每页的行数 { //先查出总共有多少行 int rowCount = this._Context.car.Count(); //页数=总行数/每页行数 int pageCount =(int) Math.Ceiling(1.0 * rowCount / pageSize); return pageCount; } //2.查询出指定页的数据 public L

Java 分页工具

[背景] 最近学习Spring MVC,涉及到分页显示的问题,准备自己整理一个分页工具.由于以前使用Strus框架使用 NewPandaKing 的一个PageBean和Page方法,耦合性比较高,于是优化一下. [优点] 耦合低,使用方便. [缺点] 由于耦合低,不查数据库,所以每次使用List的sublist方法,效率降低. 代码如下: 分页工具类:PageUtil.java /** * Java 分页工具类 */ package com.util; import java.util.Has

Mvc Linq 分页 参考PagedList

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

Extjs 4.2使用心得 --- combobox组合框和paging 分页工具使用技巧

这两个功能经常会一并使用到,一般在生成combo组合框时,设置pageSize大于0,在下拉列表的页脚位置会自动创建一个分页工具栏,前提是queryMode:'remote' 读取远程数据时. 先来建立一个Model: Ext.define('Post', { extend: "Ext.data.Model", proxy: { type: 'ajax', url: '/admin/organizations/ExtCombox/', reader: { type: 'json', r

Java Web的分页工具类

最近写一个java web项目,以前分页的工具类,都是基础架构的人写好了的.也没有去细看,现在遇到这个状况. 就整理一下思路,自己写了一个分页的工具类.写的不好之处,还望斧正. 下面是我的代码: PageUtil.java 1 package util; 2 3 import java.util.Map; 4 5 /** 6 * 分页工具类 7 * @author lyh 8 * 9 */ 10 public class PageUtil { 11 private int total; //总数