Сортировка списка List - C# (188773)

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

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

Помогите, пожалуйста, решить проблему с сортировкой. Есть набор сущностей Человек, Ученик, Преподаватель, Студент, Аспирант, Рабочий. В программе мы задаём для них их свойства — Общие: Имя, Фамилия, Отчество, Адрес Личные: Название школы и Класс для Ученика; Название предмета для Преподавателя; Специальность для Рабочего и т.д. В конце мы выводим список в таком порядке, в котором его и задавали (На скриншоте видно, что выводятся элементы в том порядке, в котором и записывались.), но теперь же мне нужно сделать сортировку по сущностям (Ученик, Студент и т.д.), но я не пойму, как это сделать, ведь эти сущности у меня записаны, как классы, они не подписаны в самом списке... Как отсортировать? Помогите, пожалуйста. P.S. То, что закомментировано — это я пробовал в каждую строку списка записывать без ввода тип сущности, которой принадлежит строка, и по этому параметру сортировать, но не вышло... P.P.S. List.Sort() пробовал, но, видимо, я слишком кривой — не вышло.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. namespace Лаба_10_часть_3
  4. {
  5. interface IPerson
  6. {
  7. //string Type { get; set; }
  8. string Name { get; set; }
  9. string Surname { get; set; }
  10. string Otchestvo { get; set; }
  11. string Adress { get; set; }
  12. }
  13. interface IPupil
  14. {
  15. string NameSchool { get; set; }
  16. string NameKlass { get; set; }
  17. }
  18. interface ITeacher
  19. {
  20. string NamePredmet { get; set; }
  21. }
  22. interface IStudent
  23. {
  24. string NameUniver { get; set; }
  25. string NomerStud { get; set; }
  26. }
  27. interface IWorker
  28. {
  29. string Special { get; set; }
  30. }
  31. interface IAdvancedStudent
  32. {
  33. string TemaDissertazii { get; set; }
  34. }
  35. class CPupil : IPupil, IPerson
  36. {
  37. //public string Type { get; set; }
  38. public string Name { get; set; }
  39. public string Surname { get; set; }
  40. public string Otchestvo { get; set; }
  41. public string Adress { get; set; }
  42. public string NameSchool { get; set; }
  43. public string NameKlass { get; set; }
  44. public override string ToString()
  45. {
  46. return "Ученик — " + " Имя: " + Name + " Фамилия: " + Surname + " Отчество: " + Otchestvo + " Адрес: " + Adress + " Номер школы" + NameSchool + " Номер класса: " + NameKlass;
  47. }
  48. }
  49. class CTeacher : ITeacher, IPerson
  50. {
  51. //public string Type { get; set; }
  52. public string Name { get; set; }
  53. public string Surname { get; set; }
  54. public string Otchestvo { get; set; }
  55. public string Adress { get; set; }
  56. public string NamePredmet { get; set; }
  57. public override string ToString()
  58. {
  59. return "Учитель — " + " Имя: " + Name + " Фамилия: " + Surname + " Отчество: " + Otchestvo + " Адрес: " + Adress + " Название предмета: " + NamePredmet;
  60. }
  61. }
  62. class CStudent : IStudent, IPerson
  63. {
  64. //public string Type { get; set; }
  65. public string Name { get; set; }
  66. public string Surname { get; set; }
  67. public string Otchestvo { get; set; }
  68. public string Adress { get; set; }
  69. public string NameUniver { get; set; }
  70. public string NomerStud { get; set; }
  71. public override string ToString()
  72. {
  73. return "Студент — " + " Имя: " + Name + " Фамилия: " + Surname + " Отчество: " + Otchestvo + " Адрес: " + Adress + " Название университета: " + NameUniver + " Номер студента: " + NomerStud;
  74. }
  75. }
  76. class CWorker : IWorker, IPerson
  77. {
  78. //public string Type { get; set; }
  79. public string Name { get; set; }
  80. public string Surname { get; set; }
  81. public string Otchestvo { get; set; }
  82. public string Adress { get; set; }
  83. public string Special { get; set; }
  84. public override string ToString()
  85. {
  86. return "Рабочий — " + " Имя: " + Name + " Фамилия: " + Surname + " Отчество: " + Otchestvo + " Адрес: " + Adress + " Специальность: " + Special;
  87. }
  88. }
  89. class CAdvanceStudent : IAdvancedStudent, IStudent, IPerson
  90. {
  91. //public string Type { get; set; }
  92. public string Name { get; set; }
  93. public string Surname { get; set; }
  94. public string Otchestvo { get; set; }
  95. public string Adress { get; set; }
  96. public string NameUniver { get; set; }
  97. public string NomerStud { get; set; }
  98. public string TemaDissertazii { get; set; }
  99. public override string ToString()
  100. {
  101. return "Аспирант — " + " Имя: " + Name + " Фамилия: " + Surname + " Отчество: " + Otchestvo + " Адрес: " + Adress + " Название университета: " + NameUniver + " Номер студента: " + NomerStud + " Тема диссертации: " + TemaDissertazii;
  102. }
  103. }
  104. class List
  105. {
  106. public static List<IPerson> spisok_chel = new List<IPerson>();
  107. }
  108. class Program
  109. {
  110. static void Main(string[] args)
  111. {
  112. string control = "";
  113. while (control != "exit")
  114. {
  115. Console.WriteLine("***********************************");
  116. Console.WriteLine("** Создание сущности: **");
  117. Console.WriteLine("***********************************");
  118. Console.WriteLine("** 1 - Создать ученика **");
  119. Console.WriteLine("** 2 - Создать учителя **");
  120. Console.WriteLine("** 3 - Создать аспиранта **");
  121. Console.WriteLine("** 4 - Создать студента **");
  122. Console.WriteLine("** 5 - Создать рабочего **");
  123. Console.WriteLine("** 6 - Вывести список сущностей **");
  124. Console.WriteLine("** 7 - Выход **");
  125. Console.WriteLine("***********************************");
  126. control = Console.ReadLine();
  127. Console.Clear();
  128. switch (control)
  129. {
  130. case "1":
  131. CPupil cp = new CPupil();
  132. //cp.Type = "Pupil";
  133. Console.Write("Введите имя: ");
  134. cp.Name = Console.ReadLine();
  135. Console.Write("Введите фамилию: ");
  136. cp.Surname = Console.ReadLine();
  137. Console.Write("Введите отчество: ");
  138. cp.Otchestvo = Console.ReadLine();
  139. Console.Write("Введите адрес: ");
  140. cp.Adress = Console.ReadLine();
  141. Console.Write("Введите номер класса: ");
  142. cp.NameKlass = Console.ReadLine();
  143. Console.Write("Введите номер школы: ");
  144. cp.NameSchool = Console.ReadLine();
  145. List.spisok_chel.Add(cp);
  146. Console.ReadKey();
  147. Console.Clear();
  148. break;
  149. case "2":
  150. CTeacher ct = new CTeacher();
  151. //ct.Type = "Teacher";
  152. Console.Write("Введите имя: ");
  153. ct.Name = Console.ReadLine();
  154. Console.Write("Введите фамилию: ");
  155. ct.Surname = Console.ReadLine();
  156. Console.Write("Введите отчество: ");
  157. ct.Otchestvo = Console.ReadLine();
  158. Console.Write("Введите адрес: ");
  159. ct.Adress = Console.ReadLine();
  160. Console.Write("Введите название преподаваемого предмета: ");
  161. ct.NamePredmet = Console.ReadLine();
  162. List.spisok_chel.Add(ct);
  163. Console.ReadKey();
  164. Console.Clear();
  165. break;
  166. case "3":
  167. CAdvanceStudent cas = new CAdvanceStudent();
  168. //cas.Type = "AStudent";
  169. Console.Write("Введите имя: ");
  170. cas.Name = Console.ReadLine();
  171. Console.Write("Введите фамилию: ");
  172. cas.Surname = Console.ReadLine();
  173. Console.Write("Введите отчество: ");
  174. cas.Otchestvo = Console.ReadLine();
  175. Console.Write("Введите адрес: ");
  176. cas.Adress = Console.ReadLine();
  177. Console.Write("Введите название университета: ");
  178. cas.NameUniver = Console.ReadLine();
  179. Console.Write("Введите номер студента: ");
  180. cas.NomerStud = Console.ReadLine();
  181. Console.Write("Введите тему диссертации: ");
  182. cas.TemaDissertazii = Console.ReadLine();
  183. List.spisok_chel.Add(cas);
  184. Console.ReadKey();
  185. Console.Clear();
  186. break;
  187. case "4":
  188. CStudent cs = new CStudent();
  189. //cs.Type = "Student";
  190. Console.Write("Введите имя: ");
  191. cs.Name = Console.ReadLine();
  192. Console.Write("Введите фамилию: ");
  193. cs.Surname = Console.ReadLine();
  194. Console.Write("Введите отчество: ");
  195. cs.Otchestvo = Console.ReadLine();
  196. Console.Write("Введите адрес: ");
  197. cs.Adress = Console.ReadLine();
  198. Console.Write("Введите название университета ");
  199. cs.NameUniver = Console.ReadLine();
  200. Console.Write("Введите номер студента: ");
  201. cs.NomerStud = Console.ReadLine();
  202. List.spisok_chel.Add(cs);
  203. Console.ReadKey();
  204. Console.Clear();
  205. break;
  206. case "5":
  207. CWorker cw = new CWorker();
  208. //cw.Type = "Worker";
  209. Console.Write("Введите имя: ");
  210. cw.Name = Console.ReadLine();
  211. Console.Write("Введите фамилию: ");
  212. cw.Surname = Console.ReadLine();
  213. Console.Write("Введите отчество: ");
  214. cw.Otchestvo = Console.ReadLine();
  215. Console.Write("Введите адрес: ");
  216. cw.Adress = Console.ReadLine();
  217. Console.Write("Введите специальность ");
  218. cw.Special = Console.ReadLine();
  219. List.spisok_chel.Add(cw);
  220. Console.ReadKey();
  221. Console.Clear();
  222. break;
  223. case "6":
  224. //spisok_chel.Sort(IPerson.Type);
  225. foreach (IPerson item in List.spisok_chel)
  226. {
  227. //if (spisok_chel.EndsWith("T"))
  228. Console.WriteLine(item.ToString());
  229. Console.WriteLine("*********************************************************");
  230. }
  231. break;
  232. case "7":
  233. {
  234. control = "exit";
  235. }
  236. Console.ReadKey();
  237. Console.Clear();
  238. break;
  239. }
  240. }
  241. }
  242. }
  243. }

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

textual
Листинг программы
  1.                     //using System.Linq;
  2.                     case "6":
  3.                         List.spisok_chel.Sort((a, b) => a.GetType().Name.CompareTo(b.GetType().Name));
  4.                         foreach (var item in List.spisok_chel)
  5.                         {
  6.                             Console.WriteLine(item);
  7.                         }
  8.                         break;

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


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

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

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

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

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

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