Перестановка столбцов/строк в матрице по ключу C#

Возникли трудности во время перестановок столбцов/строк в матрице по ключу. Данные в матрицу заносятся с клавиатуры. Ключ задается списком. Код перестановки есть, но он немного неверно сортирует. Если ввести ключ {0, 1, 2, 3, 4, 5, 6, 7}, то выводится сначала 7-й столбец, а потом с 0 по 6.

string[,] ct1 = new string[6, 8];
List<int> columnsCypherKey = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7 };
public void ColumnsPermutation()        //Перестановка столбцов
    {
        foreach (int t in columnsCypherKey)
        {
            for (int i = 0; i < ct1.GetLength(0); i++)
            {
                string tmp = ct1[i, 0];
                ct1[i, 0] = ct1[i, t];
                ct1[i, t] = tmp;
            }
        }
    }

Ответы (0 шт):