public virtual async Task <FilteredIssueListDto> SearchIssues(Expression <Func <Issue, bool> > searchFor, Expression <Func <Issue, bool> > specification, SearchSpecificationDto searchSpecification) { FilteredIssueListDto filteredIssueList = new FilteredIssueListDto(); IssueCount issueCount = new IssueCount(); var specificationValue = specification.Compile(); var searchForValue = searchFor.Compile(); filteredIssueList.Issues = await issueRepository.GetIssues(x => specificationValue(x) && searchForValue(x), searchSpecification.PageIndex, searchSpecification.PageSize); issueCount.FilteredIssue = await issueRepository.CountIssues(x => specificationValue(x) && searchForValue(x)); await CountSpecificStatusIssues(issueCount, searchForValue); filteredIssueList.Count = issueCount; return(filteredIssueList); }