public override async Task <IEnumerable <Candidate> > GetByFilterAsync(BaseEntityFilter filter, ISorter <Candidate> sorter = null) { return(await databaseExecuterService.RunStoredProcedureAsync(GetByFilterProc, (reader) => { var filteredList = new List <Candidate>(); do { if (reader.HasRows) { var entity = new CandidateRegister(); entity.ParseData(reader); filteredList.Add(entity); } if (sorter != null) { filteredList = new List <Candidate>(sorter.Sort(filteredList)); } } while (reader.Reader.Read()); //we activate the read after as the first one is done in the base DB class return filteredList; }, GetEntityProperties(filter))); }