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. 【Linux探索之旅】第二部分第一课:终端Terminal,好戏上场

    内容简介 1.第二部分第一课:终端Terminal,好戏上场 2.第二部分第二课预告:命令行,世界尽在掌握 终端Terminal,好戏上场 随着第一部分的结束,我们进入了第二部分(小编你这好像是废话. ...

  2. LeanCloud获取最近会话列表和获取最后一条聊天记录

    最近公司有项目需要集成IM聊天功能,领导要求用LeanCloud集成,搞不出来就要背包滚蛋啊,没办法只能硬着头皮搞了. 刚拿到官方提供的demo感觉:嗯,不错.图片语音啥的都有了,但尼玛这还不够啊,还 ...

  3. java ClassLoader static

    package init; class Person { private static Person person = new Person(); public static int count2 = ...

  4. TCP/IP具体解释--nagle算法和TCP_NODELAY

    在client一直给server发送小数据的时候,接受到一个回应会在非常长的时间以后,可是将多个小数据写操作合并成一个写操作,问题就没了. 这个事件的缘由可能是TCP_NODELAY的原因 如今大概明 ...

  5. gerrit git使用

    有关git的參考资料 pro git中文版, 最好的git书籍 http://git-scm.com/book/zh 图解git http://marklodato.github.com/visual ...

  6. 一个简单的样例看明确怎样利用window.location.hash实现ajax操作时浏览器的前进/后退功能

    我们知道JavaScript中非常早就提供了window.history对象,利用history对象的forward().go().back()方法可以方便实现不同页面之间的前进.后退等这样的导航功能 ...

  7. [生产环境数据恢复]innobackupex: fatal error: OR no &#39;datadir&#39; option in group &#39;mysqld&#39; in MySQL options

    1 运行恢复命令  [xxx@xxx-c001db1 tmp]$ time /usr/bin/innobackupex --rsync --user="user" --passwo ...

  8. Linux互斥和同步应用程序(四):posix互斥信号和同步

           [版权声明:尊重原创.转载请保留源:blog.csdn.net/shallnet 要么 .../gentleliu,文章仅供学习交流,请勿用于商业用途]          在前面讲共享内 ...

  9. 在java代码中获取JVM参数(转)

    近日关注性能调优,关注JMX,发现java.lang.management.*之强大.同时查阅了资料,整合一版关于JVM参数获取的note,仅供参考: MemoryMXBean memorymbean ...

  10. UML造型——使用EA时序图工具的开发实践和经验

    Enterprise Architect watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsiz ...