Поддержание исходного порядка списков после сортировки в C#

#c#-4.0

#c #-4.0

Вопрос:

Я хочу сохранить порядок списка после сортировки. Например, пользователь вводит 2, 4, 7, 1, 0 для добавления в список. Как я могу поддерживать этот порядок после использования метода статической сортировки в списке? Я попытался использовать метод пузырьковой сортировки и скопировать исходный список в другую переменную списка, но после передачи списка в метод сортировки ниже он сортирует исходный список, даже если он был скопирован в другую переменную списка.

Есть ли что-нибудь вокруг этого?

    private List<int> sortedList(List<int> sortedGrads)
    {


        for (int i = 0; i < sortedGrads.Count - 1; i  )
        {
            for (int j = 0; j < sortedGrads.Count - 1 - i; j  )
            {
                if (sortedGrads[j] > sortedGrads[j   1])
                {
                    int temp = sortedGrads[j];
                    sortedGrads[j] = sortedGrads[j   1];
                    sortedGrads[j   1] = temp;
                }
            }
        }
        return sortedGrads;
    }
 

Комментарии:

1. Не изменяйте вводимый вами параметр. Создайте новый пустой список внутри вашего метода. Поместите отсортированные результаты в новый список и верните новый список. Однако вы можете использовать linq Orderby, и это будет сделано за вас.

Ответ №1:

Чтобы получить отсортированный список, используйте LINQ и сохраните результат в другой переменной и сохраните исходный список таким, какой он есть.

 private List<int> sortedList(List<int> sortedGrads)
        {
            List<int> sortedElements = sortedGrads.OrderBy(x => x).ToList();

            //use any one from below
            return sortedGrads; //returns the original list
            return sortedElements; //returns the sorted list
        }