[英]How to add dynamic sort by direction to NHibernate queryover
我试图将方向动态顺序添加到我的nhibernate queryover中。 谁能帮忙做到这一点? 我能够添加动态orderby字段。 但不知道如何按方向进行排序。 请在下面找到我的代码:
if (!string.IsNullOrEmpty(sortField))
{
var sortByProperty = Helper.GetSortByProperty(sortField);
if (sortByProperty != null)
{
query.OrderBy(x => sortByProperty.GetValue(x, null));
}
}
var result = query.Skip(pageIndex*pageSize)
.Take(pageSize)
.Future<Member>();
我这样做的方法是,将ListSortDirection
类型变量传递给正在执行查询的函数。
因此,您可以应用
OrderBy()
: 根据键以升序对序列的元素进行排序。
OrderByDescending()
: 根据键以降序对序列的元素进行排序。
在IQueryable<T>
上,具体取决于ListSortDirection.Ascending
或ListSortDirection.Descending
的值。
根据OP在注释中的要求,添加了示例通用代码:
public IList<T> GetEntityList<T>(Expression<Func<T, bool>> whereExpression, Expression<Func<T, object>> orderByExpression, ListSortDirection orderDirection, int totalPages, int start, int limit)
{
IList<T> returnVar;
using (var session = _nhibernate.OpenSession())
{
var firstQueryable = session.Query<T>().Where(whereExpression);
IQueryable<T> secondQueryable = orderDirection == ListSortDirection.Ascending ? firstQueryable.OrderBy(orderByExpression) : firstQueryable.OrderByDescending(orderByExpression);
returnVar = totalPages > 0 ? secondQueryable.Skip(start).Take(limit).ToList() : secondQueryable.ToList();
}
return returnVar;
}
QueryOver
API的.OrderBy(orderByExpression).Desc
进行反向排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.