C#按LastID进行分页——与lambda形成链式
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形成链式的更多相关文章
- lambda表達式
lambda简介 lambda运算符:所有的lambda表达式都是用新的lambda运算符 " => ",可以叫他,“转到”或者 “成为”.运算符将表达式分为两部分,左边指定 ...
- c#中的委託,匿名方法和lambda表達式
(原博)http://www.cnblogs.com/niyw/archive/2010/10/07/1845232.html 简介 在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我 ...
- 第24课 可变参数模板(5)_DllHelper和lambda链式调用
1. dll帮助类 (1)dll的动态链接 ①传统的调用方式:先调用LoadLibrary来加载dll,再定义函数指针类型,接着调用GetProcAddress获取函数地址.然后通过函数指针调用函数, ...
- MyBatis-Plus 用起来真的很舒服
一.MyBatis-Plus 1.简介 MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在. 官网文档地址 ...
- 【Alpha版本】项目总结
我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬涛 031402341 王 ...
- JUC详解--【Foam番茄】
1.什么是JUC java.util 工具包 业务:普通的线程代码 Thread Runnable 没有返回值,效率相比于 Callable 相对较低! 2.线程和进程 进程:一个程序,QQ.exe ...
- func-spring-boot-starter 快速上手
func-spring-boot-starter test 项目地址 func-spring-boot-starter项目地址: https://gitee.com/yiur/func-spring- ...
- 匿名函数托管 func-spring-boot-starter
匿名函数托管 func-spring-boot-starter 项目地址 func-spring-boot-starter开源项目地址: https://gitee.com/yiur/func-spr ...
- Lambda表达式与标准运算符查询
class Program { static void Main(string[] args) { //Lambda表达式输出List集合每一项 List<string> list = n ...
随机推荐
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
原文:乐在其中设计模式(C#) - 策略模式(Strategy Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 策略模式(Strategy Pattern) 作者:webabc ...
- Apple Watch 1.0 开发介绍 2.1 WatchKit Apps UI要点
实现app的开始是定义storyboard场景.每个场景定义了app的一部分界面.可以为不同的尺寸自定义场景. 组装storyboard界面 WatchKit app和iOS app的布局模式不同.组 ...
- 什么时候PHP经验MySQL存储过程
1.MySQL存储过程 数据库语言,我们经常使用的操作SQL语句必须首先编译在运行时.然后运行,存储过程(Stored Procedure)它被设置为完成一个特定的功能SQL报表设置.编译存储在数据库 ...
- FastReport扩展类
题记: 最近有在用FastReport进行开发报表工作,当然也有在看书,突然想到可以用书中所写来实现一个fastreport的帮助类. 对于引用第三方类库,我们都会去将这个库在调用前进行相应的封装,也 ...
- Unity3d C# Socket 下载文件 (同步到)
续篇 Unity3d C# HttpWebRequest 异步下载文件 ,由于project编译为IL2CPP的情况下仍然无效.提示HttpWebrequest 在当前版本号不支持.所以还是寻求其他的 ...
- 采用CSS3 Media Query技术适应Android平板屏幕分辨率和屏幕像素密度
采用HTML5在开发移动应用程序满足各种需求Android分辨率和屏幕的平板设备密度,这是非常麻烦的过程,最终的解决方案是使用css media query,匹配相同的时间分辨率和屏幕像素密度.上进行 ...
- Leetcode:maximum_depth_of_binary_tree题解
一. 题目 给定一个二叉树,求它的最大深度.最大深度是沿从根节点,到叶节点最长的路径. 二. 分析 (做到这里发现接连几道题都是用递归,可能就是由于自己时挑的简单的做的吧.) 找出最深 ...
- Window Phone 8 应用程序连接扩展图片中心,图片扩展,图片查看器
WMAppManifest.xml <?xml version="1.0" encoding="utf-8"?> <Deployment xm ...
- C——联合体(共同体)总结
联合体的特点 1.联合体是一种结构,在这个结构中能够不同类型的成员,但同一时间仅仅能存放当中的一种. #include <stdio.h> union Demo { int a; char ...
- 两年前实习时的文档——MMC学习总结
1概述 驱动程序实际上是硬件与应用程序之间的中间层.在Linux操作系统中,设备驱动程序对各种不同的设备提供了一致的訪问接口,把设备映射成一个特殊的设备文件,用户程序能够像其它文件一样对设备文件进行操 ...