OrderBy / ThenBy looping - Listas anidadas en C #

Tengo una lista anidada,

List<List<String>> intable;

donde me gustaría ordenar todas las columnas. El problema es que el número de columnas depende de la entrada del usuario.

Ordenar la lista de esta manera funciona bien (suponiendo 4 columnas para este ejemplo)

var tmp = intable.OrderBy(x => x[0]);
tmp = tmp.ThenBy(x => x[1]);
tmp = tmp.ThenBy(x => x[2]);
tmp = tmp.ThenBy(x => x[3]);
intable = tmp.ToList();

Pero, cuando lo puse en un bucle, así:

var tmp = intable.OrderBy(x => x[0]);
for (int i = 1; i <= 3; i++)
{
        tmp = tmp.ThenBy(x => x[i]);
}
intable = tmp.ToList();

ya no funciona correctamente y clasifica solo la cuarta columna.

Respuestas a la pregunta(4)

Su respuesta a la pregunta