protected IEnumerable <T> FastRetrieveAllItems() { var sqlQuery = _retrieveSqlQuery; var allItems = new List <T>(); if (sqlQuery.IndexOf("offset") != -1 && sqlQuery.IndexOf("fetch") != -1) { while (true) { var items = ExecuteRetrieveAllItems(sqlQuery); allItems.AddRange(items); if (items.Count() > 0) { try { var offsetNumber = SqlQueryHelper.GetOffsetNumber(sqlQuery); var fetchNumber = SqlQueryHelper.GetFetchNumber(sqlQuery); sqlQuery = SqlQueryHelper.ChangeSqlQueryPagination(sqlQuery, offsetNumber + fetchNumber, fetchNumber); } catch (Exception ex) { _logger.Error("FastRetrieveAllItems - error when SqlQueryHelper tried change sqlQuery", ex); break; } } else { break; } } } else { var items = ExecuteRetrieveAllItems(sqlQuery); allItems.AddRange(items); } return(allItems); }