0
其簡單的Retrieve Post
方法代碼。 我正在整理記錄和基於pagesize(記錄數)Skip and Take next records
。如何避免使用linq skip顯示記錄時出現重複輸入
public IEnumerable<TEntity> GetPost(Expression<Func<TEntity, bool>> filter = null, int? page = 0, int? pageSize = null, params SortExpression<TEntity>[] sortExpressions)
{
//Filter the query set
IQueryable<TEntity> query = DbSet;
if (filter != null)
{
query = query.Where(filter);
if (query.Count() < 1)
{
throw new Exception();
}
}
// sort the filtered query result
if (sortExpressions != null)
{
IOrderedQueryable<TEntity> orderedQuery = null;
for (var i = 0; i < sortExpressions.Count(); i++)
{
if (i == 0)
{
if (sortExpressions[i].SortDirection == ListSortDirection.Ascending)
{
orderedQuery = query.OrderBy(sortExpressions[i].SortBy);
}
else
{
orderedQuery = query.OrderByDescending(sortExpressions[i].SortBy);
}
}
else
{
if (sortExpressions[i].SortDirection == ListSortDirection.Ascending)
{
orderedQuery = orderedQuery.ThenBy(sortExpressions[i].SortBy);
}
else
{
orderedQuery = orderedQuery.ThenByDescending(sortExpressions[i].SortBy);
}
}
}
// skip rows according to page number and page size
if (page != null)
{
query = orderedQuery.Skip(((int)page - 1) * (int)pageSize);
}
}
if (pageSize != null)
{
query = query.Take((int)pageSize);
}
return query.ToList();
}
問題是我記錄顯示到移動應用中DESC
秩序,使最近的職務是第一位的。
例如 - 記錄集合
1
2
3
pagesize is =2
(指一個頁面只能顯示2條記錄,當我把它的滾動會打一次GetPost
方法跳過前2條記錄,並獲取未來2個最新記錄)
現在顯示倒序記錄 -
3
2
1
現在,如果新紀錄第4次加和Ag艾因我們現在滾動此時頁面大小= 2再次, 現在它將再次複製後3 bcoz以前是有手機屏幕只,新增4將用3樣如下─
最終輸出被附加上 -
4
3
3
2
1
我想避免這種情況。
一個解決方案是可以檢查移動應用程序端的重複帖子,在方法GetPost中有沒有什麼好方法可以在api端處理?
分頁中的addrange的任何示例示例? – Neo
也許是這樣 - 'for(var page = 1; page <= Math.ceil(items/itemsOnPage); page ++){ // page = current page } – Zoner