Rango de números separados, si están en secuencia, luego por guión, y si ocurre una ruptura en la secuencia, entonces el carácter de coma

Tengo una cadena que denota la página como1,2,3,4,8,9,10,15.

Quiero que esto se muestre como1-4,8-10,15 es decir, los números en secuencia están separados por un guión entre el número más pequeño y más grande en secuencia.

Si se interrumpe la secuencia, el rango debe estar separado por una coma.

string pageNos = "5,6,7,9,10,11,12,15,16";
string result=string.Empty;
string[] arr1 = pageNos.Split(',');
int[] arr = new int[arr1.Length];

for (int x = 0; x < arr1.Length; x++) // Convert string array to integer array
{
    arr[x] = Convert.ToInt32(arr1[x].ToString());
}

for (int i = 0; i < arr.Length;i++)
{
    for (int j = i + 1; ; j++)
        if (arr[i] == (arr[j] - 1))
            result += arr[i].ToString() + "-" + arr[j].ToString();
        else
            result += arr[i].ToString() + ",";
}

Console.WriteLine(result);

Respuestas a la pregunta(8)

Su respuesta a la pregunta