標籤:
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形成鏈式