C# Сортировка коллекций по убыванию


#1

Что нужно сделать, что бы отсортировать существующую коллекцию не по возрастанию, а по убыванию? Если можно, то приведите пример сортировки коллекции int-ов.


#2

есть два варианта:

  1. первый это использовать метод Sort(IComparer comparer); у коллекций. Данный метод должен принимать через параметр объект реализующий интерфейс IComparer
    Например:
    public class DescendingComparer : IComparer
    {
    // Проверяет равенство двух объектов без учета регистра строк.
    readonly CaseInsensitiveComparer comparer = new CaseInsensitiveComparer();

     public int Compare(object x, object y)
     {
         // Для сортировки по убыванию.
         // Объекты, переданные для сравнения, меняются местами.
         int result = comparer.Compare(y, x);
    
         return result;
     }
    

    }

  2. второй это использовать методы из LINQ:

     List<int> list = new List<int>() {1, 2 ,3, 4};
    
     var selectedList = from u in list
                       orderby u descending
                       select u;
    
     либо же:
     var selectedList = list.OrderByDescending(u=>u);

#3

Спасибо за разъяснение) и ещё такой вопрос методы из LINQ работают со всеми видами коллекций или только с обобщёнными?


#4

Да, LINQ работают только с обобщёнными коллекциями, это видно из самих сигнатур методов статического класса Enumerable в пространстве имён System.Linq


#5

спасибо