C#按LastID進行分頁——與lambda形成鏈式

來源:互聯網
上載者:User

標籤:

    public static class PageHelper    {        /// <summary>        /// 按頁碼分頁        /// </summary>        /// <param name="objects">要分頁的資料集合</param>        /// <param name="pageIndex">頁碼</param>        /// <param name="pageSize">頁大小</param>        /// <returns></returns>        public static object PageByIndex(this IEnumerable<object> objects, int pageIndex,int pageSize)        {            return objects.Skip(pageIndex * pageSize).Take(pageSize);        }        /// <summary>        /// 擷取當前項在列表中的位置        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="list"></param>        /// <param name="item"></param>        /// <param name="property"></param>        /// <returns></returns>        public static int GetPageIndex<T>(object[] list, object item, string property = "ID")        {            PropertyInfo ptyIdInfo = typeof(T).GetProperty(property);            var index = 0;            for (int i = 0; i < list.Length; i++)            {                var objid = ptyIdInfo.GetValue(list[i], null);                if (Equals(objid, item))                {                    index = i;                    break;                }            }            return index;        }        /// <summary>        /// 按lastid分頁        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="objects">要分頁的資料集合</param>        /// <param name="item">分頁項值</param>        /// <param name="property">分頁項</param>        /// <param name="iswilful">分頁項是最後一個還是任意中間一個</param>        /// <param name="pageSize">頁大小</param>        /// <returns></returns>        public static object PageByLastId<T>(this IEnumerable<object> objects, object item, bool iswilful= false,int pageSize=0, string property = "ID")        {            if(pageSize==0) pageSize = Int32.Parse(BaseHelper.GetValue("pageSize"));            if (item==null||item.ToString()=="")            {                return objects.PageByIndex(0,pageSize);            }            var list = objects as object[] ?? objects.ToArray();            var index = GetPageIndex<T>(list, item, property);            if (iswilful)            {                return list.Skip(index + 1).Take(pageSize); //取任意ID後面pageSize條            }            else            {                if ((index + 1) % pageSize == 0)                {                    var pageIndex = index / pageSize + 1;                    return PageByIndex(list, pageIndex,pageSize);                }                else                {                    return new List<T>();                }               }        }    }

使用:

db.Database.SqlQuery<ScheduleDTO>(string.Format(sql,prjId,taskGroupId,userId)).PageByLastId<ScheduleDTO>(lastid)

 

C#按LastID進行分頁——與lambda形成鏈式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.