public ActionResult <List <RecordOverallDTO> > GetByID(int page, string field, [FromQuery] string searchValue, [FromQuery] string minFilterValue, [FromQuery] string maxFilterValue, [FromQuery] int pageSize = 25) { IQueryable <Record> filteredRecords; switch (field) { case "ID": filteredRecords = _recordService.FilterByID(long.Parse(minFilterValue), long.Parse(maxFilterValue)); break; case "age": filteredRecords = _recordService.FilterByAge(int.Parse(minFilterValue), int.Parse(maxFilterValue)); break; case "IP": filteredRecords = _recordService.FilterByIP(minFilterValue, maxFilterValue); break; case "time": filteredRecords = _recordService.FilterByTime(DateTimeOffset.Parse(minFilterValue), DateTimeOffset.Parse(maxFilterValue)); break; case "firstName": filteredRecords = _recordService.FilterByFirstName(searchValue); break; case "lastName": filteredRecords = _recordService.FilterByLastName(searchValue); break; case "email": filteredRecords = _recordService.FilterByEmail(searchValue); break; default: throw new ArgumentException($"Filtering by field {field} is not supported. Try another one or fix the typo"); } Response.Headers.Add("Records_Amount", filteredRecords.Count().ToString()); return(_recordPagingService.GetPage(filteredRecords, page, pageSize)); }