@@ -304,36 +304,26 @@ public virtual async Task<IEnumerable<TResource>> PageAsync(IQueryable<TResource
304
304
if ( pageNumber >= 0 )
305
305
{
306
306
entities = entities . PageForward ( pageSize , pageNumber ) ;
307
- if ( entities is IAsyncQueryProvider )
308
- {
309
- return await entities . ToListAsync ( ) ;
310
- }
311
- else
312
- {
313
- return entities . ToList ( ) ;
314
- }
307
+ return entities is IAsyncQueryProvider ? await entities . ToListAsync ( ) : entities . ToList ( ) ;
315
308
}
316
309
else
317
310
{
318
- if ( ! ( entities is IAsyncQueryProvider ) )
319
- {
320
- entities = entities . Reverse ( ) ;
321
- int firstIndex = pageSize * Math . Abs ( pageNumber ) - 1 ;
322
- int numberOfElementsInPage = Math . Min ( pageSize , firstIndex + pageSize ) ;
323
-
324
- return entities . Skip ( firstIndex ) . Take ( numberOfElementsInPage ) ;
325
- }
326
- else
311
+ if ( entities is IAsyncQueryProvider )
327
312
{
328
313
// since EntityFramework does not support IQueryable.Reverse(), we need to know the number of queried entities
329
314
var totalCount = await entities . CountAsync ( ) ;
330
315
331
316
int virtualFirstIndex = totalCount - pageSize * Math . Abs ( pageNumber ) ;
332
317
int numberOfElementsInPage = Math . Min ( pageSize , virtualFirstIndex + pageSize ) ;
333
318
334
- return await ToListAsync ( entities
335
- . Skip ( virtualFirstIndex )
336
- . Take ( numberOfElementsInPage ) ) ;
319
+ return await ToListAsync ( entities . Skip ( virtualFirstIndex ) . Take ( numberOfElementsInPage ) ) ;
320
+ }
321
+ else
322
+ {
323
+ entities = entities . Reverse ( ) ;
324
+ int firstIndex = pageSize * Math . Abs ( pageNumber ) - 1 ;
325
+ int numberOfElementsInPage = Math . Min ( pageSize , firstIndex + pageSize ) ;
326
+ return entities . Skip ( firstIndex ) . Take ( numberOfElementsInPage ) ;
337
327
}
338
328
}
339
329
}
0 commit comments