Сортировка списка List - C# (188773)
Формулировка задачи:
Помогите, пожалуйста, решить проблему с сортировкой.
Есть набор сущностей Человек, Ученик, Преподаватель, Студент, Аспирант, Рабочий. В программе мы задаём для них их свойства —
Общие: Имя, Фамилия, Отчество, Адрес
Личные: Название школы и Класс для Ученика; Название предмета для Преподавателя; Специальность для Рабочего и т.д.
В конце мы выводим список в таком порядке, в котором его и задавали (На скриншоте видно, что выводятся элементы в том порядке, в котором и записывались.), но теперь же мне нужно сделать сортировку по сущностям (Ученик, Студент и т.д.), но я не пойму, как это сделать, ведь эти сущности у меня записаны, как классы, они не подписаны в самом списке... Как отсортировать? Помогите, пожалуйста.
P.S. То, что закомментировано — это я пробовал в каждую строку списка записывать без ввода тип сущности, которой принадлежит строка, и по этому параметру сортировать, но не вышло...
P.P.S. List.Sort() пробовал, но, видимо, я слишком кривой — не вышло.
using System; using System.Collections.Generic; namespace Лаба_10_часть_3 { interface IPerson { //string Type { get; set; } string Name { get; set; } string Surname { get; set; } string Otchestvo { get; set; } string Adress { get; set; } } interface IPupil { string NameSchool { get; set; } string NameKlass { get; set; } } interface ITeacher { string NamePredmet { get; set; } } interface IStudent { string NameUniver { get; set; } string NomerStud { get; set; } } interface IWorker { string Special { get; set; } } interface IAdvancedStudent { string TemaDissertazii { get; set; } } class CPupil : IPupil, IPerson { //public string Type { get; set; } public string Name { get; set; } public string Surname { get; set; } public string Otchestvo { get; set; } public string Adress { get; set; } public string NameSchool { get; set; } public string NameKlass { get; set; } public override string ToString() { return "Ученик — " + " Имя: " + Name + " Фамилия: " + Surname + " Отчество: " + Otchestvo + " Адрес: " + Adress + " Номер школы" + NameSchool + " Номер класса: " + NameKlass; } } class CTeacher : ITeacher, IPerson { //public string Type { get; set; } public string Name { get; set; } public string Surname { get; set; } public string Otchestvo { get; set; } public string Adress { get; set; } public string NamePredmet { get; set; } public override string ToString() { return "Учитель — " + " Имя: " + Name + " Фамилия: " + Surname + " Отчество: " + Otchestvo + " Адрес: " + Adress + " Название предмета: " + NamePredmet; } } class CStudent : IStudent, IPerson { //public string Type { get; set; } public string Name { get; set; } public string Surname { get; set; } public string Otchestvo { get; set; } public string Adress { get; set; } public string NameUniver { get; set; } public string NomerStud { get; set; } public override string ToString() { return "Студент — " + " Имя: " + Name + " Фамилия: " + Surname + " Отчество: " + Otchestvo + " Адрес: " + Adress + " Название университета: " + NameUniver + " Номер студента: " + NomerStud; } } class CWorker : IWorker, IPerson { //public string Type { get; set; } public string Name { get; set; } public string Surname { get; set; } public string Otchestvo { get; set; } public string Adress { get; set; } public string Special { get; set; } public override string ToString() { return "Рабочий — " + " Имя: " + Name + " Фамилия: " + Surname + " Отчество: " + Otchestvo + " Адрес: " + Adress + " Специальность: " + Special; } } class CAdvanceStudent : IAdvancedStudent, IStudent, IPerson { //public string Type { get; set; } public string Name { get; set; } public string Surname { get; set; } public string Otchestvo { get; set; } public string Adress { get; set; } public string NameUniver { get; set; } public string NomerStud { get; set; } public string TemaDissertazii { get; set; } public override string ToString() { return "Аспирант — " + " Имя: " + Name + " Фамилия: " + Surname + " Отчество: " + Otchestvo + " Адрес: " + Adress + " Название университета: " + NameUniver + " Номер студента: " + NomerStud + " Тема диссертации: " + TemaDissertazii; } } class List { public static List<IPerson> spisok_chel = new List<IPerson>(); } class Program { static void Main(string[] args) { string control = ""; while (control != "exit") { Console.WriteLine("***********************************"); Console.WriteLine("** Создание сущности: **"); Console.WriteLine("***********************************"); Console.WriteLine("** 1 - Создать ученика **"); Console.WriteLine("** 2 - Создать учителя **"); Console.WriteLine("** 3 - Создать аспиранта **"); Console.WriteLine("** 4 - Создать студента **"); Console.WriteLine("** 5 - Создать рабочего **"); Console.WriteLine("** 6 - Вывести список сущностей **"); Console.WriteLine("** 7 - Выход **"); Console.WriteLine("***********************************"); control = Console.ReadLine(); Console.Clear(); switch (control) { case "1": CPupil cp = new CPupil(); //cp.Type = "Pupil"; Console.Write("Введите имя: "); cp.Name = Console.ReadLine(); Console.Write("Введите фамилию: "); cp.Surname = Console.ReadLine(); Console.Write("Введите отчество: "); cp.Otchestvo = Console.ReadLine(); Console.Write("Введите адрес: "); cp.Adress = Console.ReadLine(); Console.Write("Введите номер класса: "); cp.NameKlass = Console.ReadLine(); Console.Write("Введите номер школы: "); cp.NameSchool = Console.ReadLine(); List.spisok_chel.Add(cp); Console.ReadKey(); Console.Clear(); break; case "2": CTeacher ct = new CTeacher(); //ct.Type = "Teacher"; Console.Write("Введите имя: "); ct.Name = Console.ReadLine(); Console.Write("Введите фамилию: "); ct.Surname = Console.ReadLine(); Console.Write("Введите отчество: "); ct.Otchestvo = Console.ReadLine(); Console.Write("Введите адрес: "); ct.Adress = Console.ReadLine(); Console.Write("Введите название преподаваемого предмета: "); ct.NamePredmet = Console.ReadLine(); List.spisok_chel.Add(ct); Console.ReadKey(); Console.Clear(); break; case "3": CAdvanceStudent cas = new CAdvanceStudent(); //cas.Type = "AStudent"; Console.Write("Введите имя: "); cas.Name = Console.ReadLine(); Console.Write("Введите фамилию: "); cas.Surname = Console.ReadLine(); Console.Write("Введите отчество: "); cas.Otchestvo = Console.ReadLine(); Console.Write("Введите адрес: "); cas.Adress = Console.ReadLine(); Console.Write("Введите название университета: "); cas.NameUniver = Console.ReadLine(); Console.Write("Введите номер студента: "); cas.NomerStud = Console.ReadLine(); Console.Write("Введите тему диссертации: "); cas.TemaDissertazii = Console.ReadLine(); List.spisok_chel.Add(cas); Console.ReadKey(); Console.Clear(); break; case "4": CStudent cs = new CStudent(); //cs.Type = "Student"; Console.Write("Введите имя: "); cs.Name = Console.ReadLine(); Console.Write("Введите фамилию: "); cs.Surname = Console.ReadLine(); Console.Write("Введите отчество: "); cs.Otchestvo = Console.ReadLine(); Console.Write("Введите адрес: "); cs.Adress = Console.ReadLine(); Console.Write("Введите название университета "); cs.NameUniver = Console.ReadLine(); Console.Write("Введите номер студента: "); cs.NomerStud = Console.ReadLine(); List.spisok_chel.Add(cs); Console.ReadKey(); Console.Clear(); break; case "5": CWorker cw = new CWorker(); //cw.Type = "Worker"; Console.Write("Введите имя: "); cw.Name = Console.ReadLine(); Console.Write("Введите фамилию: "); cw.Surname = Console.ReadLine(); Console.Write("Введите отчество: "); cw.Otchestvo = Console.ReadLine(); Console.Write("Введите адрес: "); cw.Adress = Console.ReadLine(); Console.Write("Введите специальность "); cw.Special = Console.ReadLine(); List.spisok_chel.Add(cw); Console.ReadKey(); Console.Clear(); break; case "6": //spisok_chel.Sort(IPerson.Type); foreach (IPerson item in List.spisok_chel) { //if (spisok_chel.EndsWith("T")) Console.WriteLine(item.ToString()); Console.WriteLine("*********************************************************"); } break; case "7": { control = "exit"; } Console.ReadKey(); Console.Clear(); break; } } } } }
Решение задачи: «Сортировка списка List»
textual
Листинг программы
//using System.Linq; case "6": List.spisok_chel.Sort((a, b) => a.GetType().Name.CompareTo(b.GetType().Name)); foreach (var item in List.spisok_chel) { Console.WriteLine(item); } break;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д