Я пытаюсь разобраться следующий список List<char[]> permutations = new List<char[]>();
C# Список Сортировать по массивы символов с помощью LINQ
содержит все перестановки числа 0,1,2,3,4,5,6,7, 8,9, однако они не отсортированы, но они мне нужны. Это то, что я сделал, чтобы исправить мою проблему:
permutations = permutations.OrderBy(arr1 => arr1[9]).ToList();
permutations = permutations.OrderBy(arr1 => arr1[8]).ToList();
permutations = permutations.OrderBy(arr1 => arr1[7]).ToList();
permutations = permutations.OrderBy(arr1 => arr1[6]).ToList();
permutations = permutations.OrderBy(arr1 => arr1[5]).ToList();
permutations = permutations.OrderBy(arr1 => arr1[4]).ToList();
permutations = permutations.OrderBy(arr1 => arr1[3]).ToList();
permutations = permutations.OrderBy(arr1 => arr1[2]).ToList();
permutations = permutations.OrderBy(arr1 => arr1[1]).ToList();
permutations = permutations.OrderBy(arr1 => arr1[0]).ToList();
как я могу избежать этого и как это может быть записано в 1 строке?
Отличный ответ. Всего несколько заметок: OrderBy (a => новая строка (a)). ToList() && .Sort ((a1, a2) => (новая строка (a1)). CompareTo (новая строка (a2))); действительно медленны в производительности по сравнению с методом .ThenBy, также являются перестановками. Sort(); не работают, если мы используем символы, поскольку мы не предоставляем IComparer. Первый из них почти в 4 раза быстрее второго и третьего – KOPEUE
1) Вот почему я сказал, что это способ уменьшить _code_. Я не удивлен, что это медленнее только из-за объема памяти, выделенной для этих строк. Независимо от того, является ли это _problem_, зависит от общей производительности системы. –
2) Если вы сохранили строки вместо массивов символов, вам не нужно будет передавать сравнение с 'Sort' - он будет сортировать строки по алфавиту по умолчанию. Он не работает для массивов символов, поскольку для массивов символов не существует сопоставления по умолчанию. –