使用Expression進行動態排序分頁


Expression動態查詢、分頁

Expression,表達式樹,以lamda表達式創建,就以表達式目錄樹的形式將強類型的lambda表達式標識為數據結構。

排序

 /// <summary>
        /// 根據條件排序和查詢
        /// </summary>
        /// <typeparam name="TKey">排序字段類型</typeparam>
        /// <param name="whereLambda">查詢條件 lambda表達式</param>
        /// <param name="orderLambda">排序條件 lambda表達式</param>
        /// <returns></returns>
        public static  IEnumerable<Customers> GetListBy<TKey>(Expression<Func<Customers, bool>> whereLambda, Expression<Func<Customers, TKey>> orderLambda)
        {
            using (NorthwindEntities db = new NorthwindEntities()) { return db.Customers.Where(whereLambda).OrderBy(orderLambda).ToList(); } }

常見分頁

 /// <summary>
        /// 分頁查詢
        /// </summary>
        /// <param name="pageIndex">頁碼</param>
        /// <param name="pageSize">頁容量</param>
        /// <param name="whereLambda">條件 lambda表達式</param>
        /// <param name="orderBy">排序 lambda表達式</param>
        /// <returns></returns>
        public static List<Customers> GetPagedList<TKey>(int pageIndex, int pageSize, Expression<Func<Customers, bool>> whereLambda,
                    Expression<Func<Customers, TKey>> orderBy) { using (NorthwindEntities db = new NorthwindEntities()) { // 分頁時一定注意: Skip 之前一定要 OrderBy return db.Customers.Where(whereLambda).OrderBy(orderBy).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); } }

 調用:

 var a = GetListBy<string>((p)=> p.CustomerID == "11", (q) => q.ContactName);
  IQueryable<Orders> or = db.Orders.Where(u=>u.CustomerID=="11").Take(1);
                List<Orders> aa = or.ToList();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM