/// <summary> /// 构建查询。 /// </summary> /// <param name="predicate">筛选表达式。</param> /// <param name="page">分页信息接口。</param> /// <param name="predicate">排序选择器数组。</param> /// <returns></returns> protected IQueryable <TRecord> BuildQueryable(Expression <Func <TRecord, bool> > predicate, IPage page, params OrderSelector <TRecord>[] orderSelectors) { IQueryable <TRecord> queryable = Queryable; if (predicate != null) { queryable = queryable.Where(predicate); } var hasPage = page != null; if (hasPage && orderSelectors.IsEmpty()) { //默认Id升序 orderSelectors = new OrderSelector <TRecord>[] { OrderUtil.Ascending <TRecord>(s => new { s.Id }) }; } queryable = OrderUtil.OrderBy(queryable, orderSelectors); if (hasPage) { queryable = queryable.Skip(page.PageSize.Value * (page.PageNumber.Value - 1)).Take(page.PageSize.Value); } return(queryable); }
public void Query() { var repository = new UserRepository(); var orderSelector = OrderUtil.Ascending <User>(s => s.Name, s => s.Gender); var users = repository.Query(p => p.IsHappy, orderSelector); }