Сортировка List.Sort с IComparer - C#

Узнай цену своей работы

Формулировка задачи:

Есть класс компаратора:
public class DurationComparer : IComparer<Song>
    {
        public int Compare(Song c1, Song c2)
        {
            return c1.Duration.CompareTo(c2.Duration);
        }
    }
Сортировка:
public void Sort<Song>(ObservableCollection<Song> listToSort)
        {
            List<Song> tmp = new List<Song>();
 
            foreach (Song song in listToSort)
            {
                tmp.Add(song);
            }
 
            DurationComparer comparer = new DurationComparer();
            tmp.Sort(comparer);
 
            //var orderedSm = tmp.OrderBy(x => x.Duration).ToList();
 
        }
Ошибки: Наиболее подходящий перегруженный метод для "System.Collections.Generic.List<Song>.Sort(System.Collections.Generic.IComparer<Song>)" имеет несколько недопустимых аргументов Аргумент "1": преобразование типа из "radio.Sort.DurationComparer" в "System.Collections.Generic.IComparer<Song>" невозможно tmp.Sort(comparer); вызывает ошибки, почему? Во всех документациях и примерах такой способ вполне должен быть рабочим, же.

Решение задачи: «Сортировка List.Sort с IComparer»

textual
Листинг программы
tmp.Sort((IComparer<Song>)comparer);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5