using System.Collections.Generic;
public static void Main()
GenerateLinks(0, 10, 100);
GenerateLinks(0, 50, 68);
GenerateLinks(89, 10, 100);
GenerateLinks(99, 10, 100);
GenerateLinks(110, 10, 121);
public static void GenerateLinks(int startingOffset, int pageSize, int totalRecords)
var items = GenerateListOfItems(totalRecords).Skip(startingOffset).Take(pageSize).ToArray();
var itemsDisplay = string.Join(", ", items);
Console.WriteLine("*** startingOffset: {0}, pageSize: {1}, totalRecords: {2} ***", startingOffset, pageSize, totalRecords);
Console.WriteLine(itemsDisplay);
var numPages = Math.Floor((decimal)totalRecords / pageSize);
if (totalRecords % pageSize != 0)
var lastPageOffset = (numPages - 1) * pageSize;
var firstUri = string.Format("{0}?limit={1}", baseUri, pageSize);
var lastUri = string.Format("{0}?offset={1}", baseUri, lastPageOffset);
Console.WriteLine("First Page Uri: {0}", firstUri);
Console.WriteLine("Last Page Uri: {0}", lastUri);
var prevPageOffset = startingOffset - pageSize;
var prevUri = string.Format("{0}?offset={1}&limit={2}", baseUri, prevPageOffset, pageSize);
Console.WriteLine("Previous Page Uri: {0}", prevUri);
var nextPageOffset = startingOffset + pageSize;
if (nextPageOffset < totalRecords)
var nextUri = string.Format("{0}?offset={1}&limit={2}", baseUri, nextPageOffset, pageSize);
Console.WriteLine("Next Page Uri: {0}", nextUri);
Console.WriteLine("*********************************************");
public static List<string> GenerateListOfItems(int totalRecords)
var result = new List<string>();
for (var i = 0; i < totalRecords; i++)
result.Add("Item: " + (i + 1).ToString());