public virtual async Task <PagedQueryResultSet <TResult> > GetDocumentsWithPagingAsync <T, TResult>(
            Func <IQueryable <T>, IQueryable <TResult> > query,
            ResultSetCriteria criteria, Dictionary <string, object> arrayContainsReplacements = null) where T : AuditedDocumentBase, new()
        {
            var partitionKey = GetPartitionKey();

            var type      = (new T()).DocType;
            var resultSet = await _documentDbService.GetDocumentsWithPagingAsync <T, TResult>(_collectionId, partitionKey,
                                                                                              q => query(q.Where(doc => doc.DocType == type && (criteria.IncludeDeleted || !doc.IsDeleted))),
                                                                                              criteria, arrayContainsReplacements);

            return(resultSet);
        }