protected async Task <IAuditQueryResult> Execute(AuditQuerySort sortColumn, AuditQuerySortDirection direction, Func <IQueryable <AuditEntity>, IQueryable <AuditEntity> > applyPaging) { var query = Query .Where(criteriaBuilder.Build()); long numberOfRows = await Count <AuditEntity>(query); var results = ToOrderedList(query, sortColumn, direction); return(CreateResults(results, numberOfRows)); }
private IEnumerable <AuditEntity> ToOrderedList(IQueryable <AuditEntity> query, AuditQuerySort sortColumn, AuditQuerySortDirection direction) { Expression <Func <AuditEntity, object> > sortColumnSelector = ae => ae.When; sortColumnSelector = SortColumnSelectors[sortColumn]; query = direction == AuditQuerySortDirection.Descending ? query.OrderByDescending(sortColumnSelector) : query.OrderBy(sortColumnSelector); query = ApplyAnyPaging(query); return(query); }
protected virtual Task <IAuditQueryResult> Execute(AuditQuerySort sortColumn, AuditQuerySortDirection direction) { return(Execute(sortColumn, direction, _ => _)); }