62,046
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 返回分页数据集
/// </summary>
/// <param name="top">查询前几条,0或null为所有</param>
/// <param name="where">查询条件,Dictionary<String, Object></param>
/// <param name="OrderBy">查询排序,Dictionary<String, Boolean>true-asc,false-desc</param>
/// <param name="_like">模糊查询,Dictionary<String, Object>,例如:item.Add("username","%snail%");</param>
/// <param name="pageSize">页码,10</param>
/// <param name="currentPageIndex">当前页</param>
/// <param name="recordCount">返回总页数</param>
/// <returns></returns>
public virtual IList<T> GetPagerList(Dictionary<String, Object> where, Dictionary<String, Boolean> OrderBy, Dictionary<String, Object> _like, int pageSize, int currentPageIndex, out int recordCount)
{
var list = Session.CreateCriteria(typeof(T));
#region 条件查询
if (where != null && where.Count > 0)
{
foreach (var item in where)
{
list.Add(NHibernate.Criterion.Expression.Eq(item.Key, item.Value));
}
}
//模糊查询
if (_like != null && _like.Count > 0)
{
foreach (var item in _like)
{
list.Add(NHibernate.Criterion.Expression.Like(item.Key, item.Value));
}
}
#endregion
#region 排序
if (OrderBy != null && OrderBy.Count > 0)
{
foreach (var item in OrderBy)
{
if (item.Value)//true-asc,false-desc
list.AddOrder(NHibernate.Criterion.Order.Asc(item.Key));
else
list.AddOrder(NHibernate.Criterion.Order.Desc(item.Key));
}
}
#endregion
recordCount = Convert.ToInt32(list.List().Count);
list.SetFirstResult((currentPageIndex - 1) * pageSize)
.SetMaxResults(pageSize);
return list.List<T>();
}