public static class PageHelper
{
/// <summary>
/// 按页码分页
/// </summary>
/// <param name="objects">要分页的数据集合</param>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">页大小</param>
/// <returns></returns>
public static object PageByIndex(this IEnumerable<object> objects, int pageIndex,int pageSize)
{
return objects.Skip(pageIndex * pageSize).Take(pageSize);
} /// <summary>
/// 获取当前项在列表中的位置
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list"></param>
/// <param name="item"></param>
/// <param name="property"></param>
/// <returns></returns>
public static int GetPageIndex<T>(object[] list, object item, string property = "ID")
{
PropertyInfo ptyIdInfo = typeof(T).GetProperty(property);
var index = ;
for (int i = ; i < list.Length; i++)
{
var objid = ptyIdInfo.GetValue(list[i], null);
if (Equals(objid, item))
{
index = i;
break;
}
}
return index;
} /// <summary>
/// 按lastid分页
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="objects">要分页的数据集合</param>
/// <param name="item">分页项值</param>
/// <param name="property">分页项</param>
/// <param name="iswilful">分页项是最后一个还是任意中间一个</param>
/// <param name="pageSize">页大小</param>
/// <returns></returns>
public static object PageByLastId<T>(this IEnumerable<object> objects, object item, bool iswilful= false,int pageSize=, string property = "ID")
{
if(pageSize==) pageSize = Int32.Parse(BaseHelper.GetValue("pageSize"));
if (item==null||item.ToString()=="")
{
return objects.PageByIndex(,pageSize);
}
var list = objects as object[] ?? objects.ToArray();
var index = GetPageIndex<T>(list, item, property);
if (iswilful)
{
return list.Skip(index + ).Take(pageSize); //取任意ID后面pageSize条
}
else
{
if ((index + ) % pageSize == )
{
var pageIndex = index / pageSize + ;
return PageByIndex(list, pageIndex,pageSize);
}
else
{
return new List<T>();
}
}
}
}

使用:

db.Database.SqlQuery<ScheduleDTO>(string.Format(sql,prjId,taskGroupId,userId)).PageByLastId<ScheduleDTO>(lastid)

C#按LastID进行分页——与lambda形成链式的更多相关文章

  1. lambda表達式

    lambda简介 lambda运算符:所有的lambda表达式都是用新的lambda运算符 " => ",可以叫他,“转到”或者 “成为”.运算符将表达式分为两部分,左边指定 ...

  2. c#中的委託,匿名方法和lambda表達式

    (原博)http://www.cnblogs.com/niyw/archive/2010/10/07/1845232.html 简介 在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我 ...

  3. 第24课 可变参数模板(5)_DllHelper和lambda链式调用

    1. dll帮助类 (1)dll的动态链接 ①传统的调用方式:先调用LoadLibrary来加载dll,再定义函数指针类型,接着调用GetProcAddress获取函数地址.然后通过函数指针调用函数, ...

  4. MyBatis-Plus 用起来真的很舒服

    一.MyBatis-Plus 1.简介 MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在. 官网文档地址 ...

  5. 【Alpha版本】项目总结

    我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬涛 031402341 王 ...

  6. JUC详解--【Foam番茄】

    1.什么是JUC java.util 工具包 业务:普通的线程代码 Thread Runnable 没有返回值,效率相比于 Callable 相对较低! 2.线程和进程 进程:一个程序,QQ.exe ...

  7. func-spring-boot-starter 快速上手

    func-spring-boot-starter test 项目地址 func-spring-boot-starter项目地址: https://gitee.com/yiur/func-spring- ...

  8. 匿名函数托管 func-spring-boot-starter

    匿名函数托管 func-spring-boot-starter 项目地址 func-spring-boot-starter开源项目地址: https://gitee.com/yiur/func-spr ...

  9. Lambda表达式与标准运算符查询

    class Program { static void Main(string[] args) { //Lambda表达式输出List集合每一项 List<string> list = n ...

随机推荐

  1. cocos2d-x 3.1.1 学习笔记[17] 关于这些活动功能

    供cocos2d-x通常使用的方法,我有一个好脸色.这项研究真的奖励. 向导首先,定义,实施一系列连续动作. 对于我们的行动能回调函数,我们必须申报并加以实施. void callBack(); vo ...

  2. mysql出现Data truncated for column

    1.首先叙述,描述你自己的问题. 假设你想把同意为空值的勾去掉.. .恰巧数据库中的数据 processed_f 为空没有值. . . .这时候你对数据表结构做更改的时候就会出现Data trunca ...

  3. dapper支持oracle游标

    dapper支持oracle游标 Dapper是一个轻型的ORM类.它有啥优点.缺点相信很多朋友都知道了,园里也有很多朋友都有相关介绍,这里就不多废话. 如果玩过Oracle都知道,存储过程基本都是通 ...

  4. topshelf和quartz

    topshelf和quartz内部分享 阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客. 介 ...

  5. ffmpeg和opencv 播放视频文件和显示器

    ffmpeg它是基于最新版本,在官网下载http://ffmpeg.zeranoe.com/builds/.编译时VS2010配置相关头文件及库的路径就可以.opencv的搭建參考上一个博客. 首先简 ...

  6. cocos2d-x3.x屏蔽遮罩层屏蔽触摸button

    cocos2d-x3.x触摸方法改变后,.屏蔽掉的层实际上触摸事件的非常easy,首先touchbegan一定要回true,第二,该事件被设定为听吞没触摸true.最近登录触摸水平必须低于0,现在,我 ...

  7. HTML5中类jQuery选择器querySelector的高级使用 document.querySelectorAll.bind(document);

    基本用法 querySelector 该方法返回满足条件的单个元素.按照深度优先和先序遍历的原则使用参数提供的CSS选择器在DOM进行查找,返回第一个满足条件的元素. ----> querySe ...

  8. Afinal载入网络图片及下载文件用法

    Afinal高速开发框架使用起来很方便.以下将解说怎样利用Afinal载入网络图片及下载文件: 先看效果图: 注意:使用Afinal前需加入Afinal的jar,能够在这里下载:http://down ...

  9. Java使用串行编程操作继电器

    首先,我们必须建立一个良好的环境,那是,jdk并且tomcat.如果它不必须是web装了! 还有就是配置,也就是默认的comm.jar ,javax.comm.properties , win32co ...

  10. [Cocos2d-x]Mac下cocos2d-x连接pomeloserver

    Pomelo 是由网易开发的基于node.js 开发的高性能.分布式游戏server框架, 也可作为高实时web应用框架. Polemo的配置这里就不赘述了,Github的wiki非常全面. 在此记录 ...