public ProductResults[] GetList(string catid, int currentPage, int pageSize, refint numResults) { numResults =0; int index=0; SqlDataReader reader = GetList(catid); ProductResults[] results =new ProductResults[pageSize]; // now loop through the list and pull out items of the specified page int start = (int)((currentPage -1) * pageSize); if (start <=0) start =1; // skip for (int i =0; i < start -1; i++) { if (reader.Read()) numResults++; } if (start >1) reader.Read(); // read the data we are interested in while (reader.Read()) { if (index < pageSize) { results[index] =new ProductResults(); results[index].productid = reader.GetString(0); results[index].name = reader.GetString(1); index++; } numResults++; } reader.Close(); // see if need to redim array if (index == pageSize) return results; else{ // not a full page, redim array ProductResults[] results2 =new ProductResults[index]; Array.Copy(results, results2, index); return results2; } }