Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.17 KB | None | 0 0
  1. var queryResult = from o in objects
  2. where ...
  3. select new
  4. {
  5. A = o.a,
  6. B = o.b
  7. }
  8. ????????? TOP 10????????
  9.  
  10. int numberOfObjectsPerPage = 10;
  11. var queryResultPage = queryResult
  12. .Skip(numberOfObjectsPerPage * pageNumber)
  13. .Take(numberOfObjectsPerPage);
  14.  
  15. static class PagingUtils {
  16. public static IEnumerable<T> Page<T>(this IEnumerable<T> en, int pageSize, int page) {
  17. return en.Skip(page * pageSize).Take(pageSize);
  18. }
  19. public static IQueryable<T> Page<T>(this IQueryable<T> en, int pageSize, int page) {
  20. return en.Skip(page * pageSize).Take(pageSize);
  21. }
  22. }
  23.  
  24. var q = (from p in products
  25. where p.Show == true
  26. select new { p.Name }).Page(10, pageIndex);
  27.  
  28. public static IEnumerable<IEnumerable<T>> Page<T>(this IEnumerable<T> source, int pageSize)
  29. {
  30. Contract.Requires(source != null);
  31. Contract.Requires(pageSize > 0);
  32. Contract.Ensures(Contract.Result<IEnumerable<IEnumerable<T>>>() != null);
  33.  
  34. using (var enumerator = source.GetEnumerator())
  35. {
  36. while (enumerator.MoveNext())
  37. {
  38. var currentPage = new List<T>(pageSize)
  39. {
  40. enumerator.Current
  41. };
  42.  
  43. while (currentPage.Count < pageSize && enumerator.MoveNext())
  44. {
  45. currentPage.Add(enumerator.Current);
  46. }
  47. yield return new ReadOnlyCollection<T>(currentPage);
  48. }
  49. }
  50. }
  51.  
  52. var items = Enumerable.Range(0, 12);
  53.  
  54. foreach(var page in items.Page(3))
  55. {
  56. // Do something with each page
  57. foreach(var item in page)
  58. {
  59. // Do something with the item in the current page
  60. }
  61. }
  62.  
  63. ( for o in objects
  64. where ...
  65. select new
  66. {
  67. A=o.a,
  68. B=o.b
  69. })
  70. .Skip((page-1)*pageSize)
  71. .Take(pageSize)
  72.  
  73. var queryResult = (from o in objects where ...
  74. select new
  75. {
  76. A = o.a,
  77. B = o.b
  78. }
  79. ).Take(10);
  80.  
  81. private static IEnumerable<T> PagedIterator<T>(IEnumerable<T> objectList, int PageSize)
  82. {
  83. var page = 0;
  84. var recordCount = objectList.Count();
  85. var pageCount = (int)((recordCount + PageSize)/PageSize);
  86.  
  87. if (recordCount < 1)
  88. {
  89. yield break;
  90. }
  91.  
  92. while (page < pageCount)
  93. {
  94. var pageData = objectList.Skip(PageSize*page).Take(PageSize).ToList();
  95.  
  96. foreach (var rd in pageData)
  97. {
  98. yield return rd;
  99. }
  100. page++;
  101. }
  102. }
  103.  
  104. var results = from a in dbContext.Authors
  105. where a.PublishDate > someDate
  106. orderby a.Publisher
  107. select a;
  108.  
  109. foreach(var author in PagedIterator(results, 100))
  110. {
  111. // Do Stuff
  112. }
  113.  
  114. var pages = items.Select((item, index) => new { item, Page = index / batchSize }).GroupBy(g => g.Page);
  115.  
  116. pages.First(p => p.Key == thePage)
  117.  
  118. public LightDataTable PagerSelection(int pageNumber, int setsPerPage, Func<LightDataRow, bool> prection = null)
  119. {
  120. this.setsPerPage = setsPerPage;
  121. this.pageNumber = pageNumber > 0 ? pageNumber - 1 : pageNumber;
  122. if (!ValidatePagerByPageNumber(pageNumber))
  123. return this;
  124.  
  125. var rowList = rows.Cast<LightDataRow>();
  126. if (prection != null)
  127. rowList = rows.Where(prection).ToList();
  128.  
  129. if (!rowList.Any())
  130. return new LightDataTable() { TablePrimaryKey = this.tablePrimaryKey };
  131. //if (rowList.Count() < (pageNumber * setsPerPage))
  132. // return new LightDataTable(new LightDataRowCollection(rowList)) { TablePrimaryKey = this.tablePrimaryKey };
  133.  
  134. return new LightDataTable(new LightDataRowCollection(rowList.Skip(this.pageNumber * setsPerPage).Take(setsPerPage).ToList())) { TablePrimaryKey = this.tablePrimaryKey };
  135. }
  136.  
  137. public static IQueryable<T> Page<T, TResult>(this IQueryable<T> obj, int page, int pageSize, System.Linq.Expressions.Expression<Func<T, TResult>> keySelector, bool asc, out int rowsCount)
  138. {
  139. rowsCount = obj.Count();
  140. int innerRows = rowsCount - (page * pageSize);
  141. if (innerRows < 0)
  142. {
  143. innerRows = 0;
  144. }
  145. if (asc)
  146. return obj.OrderByDescending(keySelector).Take(innerRows).OrderBy(keySelector).Take(pageSize).AsQueryable();
  147. else
  148. return obj.OrderBy(keySelector).Take(innerRows).OrderByDescending(keySelector).Take(pageSize).AsQueryable();
  149. }
  150.  
  151. public IEnumerable<Data> GetAll(int RowIndex, int PageSize, string SortExpression)
  152. {
  153. int totalRows;
  154. int pageIndex = RowIndex / PageSize;
  155.  
  156. List<Data> data= new List<Data>();
  157. IEnumerable<Data> dataPage;
  158.  
  159. bool asc = !SortExpression.Contains("DESC");
  160. switch (SortExpression.Split(' ')[0])
  161. {
  162. case "ColumnName":
  163. dataPage = DataContext.Data.Page(pageIndex, PageSize, p => p.ColumnName, asc, out totalRows);
  164. break;
  165. default:
  166. dataPage = DataContext.vwClientDetails1s.Page(pageIndex, PageSize, p => p.IdColumn, asc, out totalRows);
  167. break;
  168. }
  169.  
  170. foreach (var d in dataPage)
  171. {
  172. clients.Add(d);
  173. }
  174.  
  175. return data;
  176. }
  177. public int CountAll()
  178. {
  179. return DataContext.Data.Count();
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement