/// <summary> /// Returns query with filters and sorting applied. /// </summary> /// <typeparam name="TRoot">The type of the entity.</typeparam> /// <typeparam name="TSubType">The type of the sub type.</typeparam> /// <param name="query">The query.</param> /// <param name="filter">The filter.</param> /// <param name="order">The order.</param> /// <param name="orderDescending">if set to <c>true</c> order descending.</param> /// <param name="pageNumber">The page number.</param> /// <param name="itemsPerPage">The items per page.</param> /// <returns>Query with filters and sorting applied</returns> public static IQueryOver <TRoot, TSubType> ApplyFilters <TRoot, TSubType>(this IQueryOver <TRoot, TSubType> query, Expression <Func <TSubType, bool> > filter = null, Expression <Func <TSubType, dynamic> > order = null, bool orderDescending = false, int?pageNumber = null, int?itemsPerPage = null) { if (filter != null) { query = query.Where(filter); } if (order != null) { query = (orderDescending) ? query.OrderBy(order).Desc : query.OrderBy(order).Asc; } query = query.AddPaging(pageNumber, itemsPerPage); return(query); }
/// <summary> /// Adds the paging to nHibernate query. /// </summary> /// <param name="query">The query.</param> /// <param name="options">The options.</param> /// <returns>The query</returns> public static IQueryOver <TRoot, TSubType> AddPaging <TRoot, TSubType>(this IQueryOver <TRoot, TSubType> query, SortAndPagingOptions options) { return(query.AddPaging(options.PageNumber, options.PageSize)); }