/// <summary>
 /// Asynchronously returns a paginated list of the documents matching the filter condition.
 /// </summary>
 /// <typeparam name="TDocument">The type representing a Document.</typeparam>
 /// <param name="filter">A LINQ expression filter.</param>
 /// <param name="sortSelector">The property selector.</param>
 /// <param name="ascending">Order of the sorting.</param>
 /// <param name="skipNumber">The number of documents you want to skip. Default value is 0.</param>
 /// <param name="takeNumber">The number of documents you want to take. Default value is 50.</param>
 /// <param name="partitionKey">An optional partition key.</param>
 public virtual async Task <List <TDocument> > GetSortedPaginatedAsync <TDocument>(
     Expression <Func <TDocument, bool> > filter,
     Expression <Func <TDocument, object> > sortSelector,
     bool ascending      = true,
     int skipNumber      = 0,
     int takeNumber      = 50,
     string partitionKey = null)
     where TDocument : IDocument <TKey>
 {
     return(await MongoDbReader.GetSortedPaginatedAsync <TDocument, TKey>(filter, sortSelector, ascending, skipNumber, takeNumber, partitionKey));
 }