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 = ; /// <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() - + _pageSize) / _pageSize;
} public IEnumerable<entity> Take(int currentPage)
{
if (currentPage <= || currentPage > PageCount)
{
return null;
} var query =
_collection.Take(_pageSize * currentPage).Skip(_pageSize * (currentPage - ));
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分页工具的更多相关文章

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

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

  2. Linq学习工具及Lamada表达式

    好东西.转载一个.以备学习 Linq学习工具:     http://www.linqpad.net/ Lamada表达式: Func<int, int, int> IntPow = (x ...

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

    //LINQ分页的方法 //1.获取总页数 public int GetPageCount(int pageSize)//pageSize是每页的行数 { //先查出总共有多少行 int rowCou ...

  4. C# SQL优化 及 Linq 分页

    每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...

  5. Linq分页查询

    //Linq分页查询 int pageIndex = Convert.ToInt32(HttpContext.Current.Request["PageIndex"]); int ...

  6. sql转Linq的工具

    本文转载:http://www.cnblogs.com/huangxincheng/archive/2011/05/12/2044990.html 介绍一个小工具 Linqer   这些天写Linq挺 ...

  7. Js处理数据——前端分页工具

    这几天有小伙伴讨论起了分页的相关问题,这里我也简单讲下前端如何简单便捷的利用Js(库)写出优雅,好用的分页工具. 分页是个很简单又超多接触的技术点,粗略来讲分如下两种: 真分页--每次根据页码.页大小 ...

  8. Linq分页

    /// <summary> /// Linq分页 /// </summary> ;//每页条数 ;//总条数 ;//当前第几页 public static string con ...

  9. PHP常用之封装分页工具类

    分页基本上是每个项目都会使用到的,所以呢,把它封装成一个工具类,以后直接调用就可以了(虽然TP框架的灰常强大,但是自己封一个也未尝不可.),这样既省时又省力还赚'工分'. 我封的这个分页工具类还比较完 ...

随机推荐

  1. 鸟哥的linux私房菜学习记录之计算机概论

  2. CKEditor+SWFUpload实现功能较为强大的编辑器(三)---后台接收图片流程

    在前台配置完CKEditor和SWFUpload之后就可以满足基本的需求了 在这里,我配置的接收异步上传的图片的页面为upload.ashx 在这个ashx中对上传的图片处理的流程如下: contex ...

  3. 配置多层NAT和端口映射实现外网访问内网

    配置多层NAT和端口映射实现外网访问内网 背景和原理 通过配置NAT可以实现内网中不能直接访问外网的主机通过NAT代理访问内网,配置方法这里不再赘述(前文有介绍).本文以两层的NAT代理做模拟,通过端 ...

  4. 比特币Bitcoin-qt客户端加密前后如何导入导出私钥?

    一.Bitcoin-qt客户端加密后 如需要导出某一地址对应的私钥,需要先调用 walletpassphrase 密码 解锁持续时间(秒), 如:walletpassphrase h123456789 ...

  5. Python Requests post并将得到结果转换为json

    Python Requests post并将得到结果转换为json 学习了:https://blog.csdn.net/sinat_28680819/article/details/70940325  ...

  6. Zynq Fatfs文件系统应用笔记

    Zynq Fatfs文件系统应用笔 Hello,panda 笔记介绍基于所描写叙述的Zynq Fatfs基于Xilinx xilffsv3.0和Sdpsv2.4,文件系统採用在Bare-Metal和轻 ...

  7. Tomcat 高性能实现关键点

    我在这里给大家讲解下Tomcat架构设计的几个关键要素,重点从性能及高可用等几个方面来讲解: 1.技术选型 (1) BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限 ...

  8. Javascript中的回调函数和匿名函数的回调

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Loadrunner 关于参数赋值取值的操作

    1.参数的赋值和取值 lr_save_string("hello world","param"); lr_eval_string("{param}&q ...

  10. 安装npm install时,长时间停留在某一处的解决方案

    默认情况npm install安装时,会从 github.com 上下载文件,大部分安装不成功的原因都源自这里 因为 GitHub Releases 里的文件都托管在 s3.amazonaws.com ...