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); }