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

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

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

Есть класс компаратора:
Листинг программы
  1. public class DurationComparer : IComparer<Song>
  2. {
  3. public int Compare(Song c1, Song c2)
  4. {
  5. return c1.Duration.CompareTo(c2.Duration);
  6. }
  7. }
Сортировка:
Листинг программы
  1. public void Sort<Song>(ObservableCollection<Song> listToSort)
  2. {
  3. List<Song> tmp = new List<Song>();
  4. foreach (Song song in listToSort)
  5. {
  6. tmp.Add(song);
  7. }
  8. DurationComparer comparer = new DurationComparer();
  9. tmp.Sort(comparer);
  10. //var orderedSm = tmp.OrderBy(x => x.Duration).ToList();
  11. }
Ошибки: Наиболее подходящий перегруженный метод для "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
Листинг программы
  1. tmp.Sort((IComparer<Song>)comparer);

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут