Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
 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);
 }