OrderBy / ThenBy loop - listas aninhadas em C #

Tenho uma lista aninhada,

List<List<String>> intable;

onde eu gostaria de classificar todas as colunas. O problema é que o número de colunas depende da entrada do usuári

lassificar a lista como esta funciona bem (assumindo 4 colunas para este exempl

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();

Mas, quando eu coloco em um loop, assim:

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

não funciona mais corretamente e classifica apenas a quarta colun

questionAnswers(4)

yourAnswerToTheQuestion