首先定义一个静态类

 public static class QueryAssembly
{
/// <summary>
/// 返回true
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static Expression<Func<T, bool>> True<T>()
{
return f => true;
} /// <summary>
/// false
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static Expression<Func<T, bool>> False<T>()
{
return f => false;
} /// <summary>
/// or
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="expr1"></param>
/// <param name="expr2"></param>
/// <returns></returns>
public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,Expression<Func<T, bool>> expr2)
{
var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T, bool>>
(Expression.Or(expr1.Body, invokedExpr), expr1.Parameters);
} /// <summary>
/// and
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="expr1"></param>
/// <param name="expr2"></param>
/// <returns></returns>
public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,Expression<Func<T, bool>> expr2)
{
var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T, bool>>
(Expression.And(expr1.Body, invokedExpr), expr1.Parameters);
}
}

定义Page类

 public class Paging<T>
{
/// <summary>
/// 当前页码
/// </summary>
[DataMember]
public int PageNo { get; set; } /// <summary>
/// 总页数
/// </summary>
[DataMember]
public int PageCount { get; set; } /// <summary>
/// 每页记录数
/// </summary>
[DataMember]
public int PageSize { get; set; } /// <summary>
/// 总记录数
/// </summary>
[DataMember]
public int RecordCount { get; set; } /// <summary>
/// 当前页的数据
/// </summary>
[DataMember]
public List<T> CurrentList { get; set; }
}

查询方法

 public Paging<DAML> QueryAJML(int pageNo, int pageSize,DAML data)
{
Paging<DAML> result = null;
Expression<Func<DAML, bool>> ExpWhere = QueryAssembly.True<DAML>();
using (IStatelessSession session = _sessionFactory.OpenStatelessSession())
{
var queryDAML = session.Query<DAML>(); if (!string.IsNullOrEmpty(data.MLH))
{
ExpWhere=ExpWhere.Or(x=>x.MLH.Contains(data.MLH));
} if (!string.IsNullOrEmpty(data.QZH))
{
ExpWhere = ExpWhere.Or(x => x.MLH.Contains(data.QZH));
} //查询
queryDAML.Where(ExpWhere); //排序
queryDAML.OrderBy(x=>x.ID); //页数
result.PageNo = pageNo;
//每页记录数
result.PageSize = pageSize;
//总记录数
result.RecordCount = queryDAML.Count();
//总页数
result.PageCount = (result.RecordCount + result.PageSize - ) / result.PageSize;
//返回数据
result.CurrentList = new List<DAML>();
result.CurrentList = queryDAML.ToList();
}
return result;
}

最新文章

  1. React Native学习笔记之2
  2. mac linux 删除一个文件下边所有文件和文件夹
  3. kafka 命令行操作
  4. Java Spring DI之旅
  5. css中px,em和rem的区别
  6. 重构第23天 引用参数对象(Introduce Parameter Object)
  7. 删:[CentOS 7] 安装nginx
  8. jQuery插件开发(转)
  9. 随机森林——Random Forests
  10. 基础题:HDU 5122 K.Bro Sorting
  11. sql中with的用法(CTE公用表表达式):应用子查询嵌套,提高sql性能
  12. spring(IOC)动态代理
  13. UITapGestureRecognizer 的用法(轻触手势识别器)
  14. ARM汇编语言
  15. 我对git的认识
  16. npm 安装 electron 超时
  17. Java I/O系列汇总
  18. ZOJ-3230-Solving the Problems
  19. 用JS遍历循环时覆盖了之前的值
  20. 微软Azure平台 cloud service动态申请证书并绑定证书碰到的坑

热门文章

  1. 多线程归并排序的实现 java
  2. (4)I2C总线的7bit从机地址
  3. Eclipse 使用 Link 方式进行插件的安装
  4. 微软 Build 2014开发者大会干货整理-1
  5. 【前端】CSS3实现弹出效果
  6. Shell的那些事儿
  7. iptables/netfilter命令、实现及利用(转)
  8. poj 2117 Electricity【点双连通求删除点后最多的bcc数】
  9. 一个疑难bug的解决过程
  10. php中的$_SERVER从哪来