ArrayList отсортировать по одному из полей - C#

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

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

как мне отсортировать Список journal по именам по алфавиту?
namespace ClassJournal
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] spisAbityr = new string[]
            {
                "Мухин",
                "Крылов",
                "Юля",
                "Дыкина",
                "Росина",
                "Левчик",
                "Сотников"
            };
            Journal journ = new Journal();
            for (int i = 0; i < spisAbityr.Length; i++)
                journ[i] = new Student(spisAbityr[i], i + 1); // заполнение списка
            foreach (Student st in journ) 
                Console.WriteLine(st.Number +". "+st.Name); // Вывод списка
            Console.ReadKey();
            Console.WriteLine();

            foreach (Student st in journ)
                Console.WriteLine(st.Number + ". " + st.Name);
            Console.ReadKey();
 
        }
    }
    class Student//....................................................... класс Студент
    {
        int number;
        string name;
        
        public int Number
        {
            get { return number;}
            set
            {
                if (value > 0 && value < 31)
                    number = value;
            }
        }
        public string Name
        {
            get { return name; }
            set
            {
                if (value.Length > 0 && value.Length < 51)
                    name = value;
            }
        }
        
        public Student(string name, int number)
        {
            this.name = name;
            this.number = number;
        }
    }
    class Journal : IComparable//........................................Класс Журнал
    {
        ArrayList journal = new ArrayList();
        
        public Student this[int i]
        {
            get { return (Student)journal[i]; }
            set 
            {
                if (i > -1 && (value is Student))
                    journal.Add(value);
            }
        }
 
        public int Length 
        {
            get { return journal.Count; }
        }
 
        public IEnumerator GetEnumerator()
        {
            foreach (object o in journal)
                yield return o;
        }
 
        public int CompareTo(object obj) // Думаю надо его переопределить, но не знаю как..
        {
            return 0;
        }
    }
}
как мне отсортировать Список journal по именам по алфавиту? P.S. Все фамилии , кроме Сотникова, подчеркнуло красным цветом(не в ВС , а на сайте), обрадую парня =)))

Решение задачи: «ArrayList отсортировать по одному из полей»

textual
Листинг программы
    class Program
    {
        static void Main(string[] args)
        {
            string[] spisAbityr = new string[]
            {
                "Мухин",
                "Крылов",
                "Юля",
                "Дыкина",
                "Росина",
                "Левчик",
                "Сотников"
            };
            Journal journ = new Journal();
            for (int i = 0; i < spisAbityr.Length; i++)
                journ[i] = new Student(spisAbityr[i], i + 1); // заполнение списка
 
            journ.SortByName();
            foreach (Student st in journ)
                Console.WriteLine(st.Number + ". " + st.Name); // Вывод списка
            Console.ReadKey();
        }
    }
    class Student : IComparable //....................................................... класс Студент
    {
        int number;
        string name;
 
        public int Number
        {
            get { return number; }
            set
            {
                if (value > 0 && value < 31)
                    number = value;
            }
        }
        public string Name
        {
            get { return name; }
            set
            {
                if (value.Length > 0 && value.Length < 51)
                    name = value;
            }
        }
 
        public Student(string name, int number)
        {
            this.name = name;
            this.number = number;
        }
 
        public int CompareTo(object obj) 
        {
            if (obj == null) throw new ArgumentNullException();
 
            Student other = obj as Student;
            if (other != null)
                return this.Name.CompareTo(other.Name);
            else
                throw new ArgumentException("Object is not a Student");
        }
 
    }
    class Journal : IComparable//........................................Класс Журнал
    {
        ArrayList journal = new ArrayList();
 
        public void SortByName()
        {
            if (journal == null || journal.Count == 0)
                return;
 
            journal.Sort();
        }
        public Student this[int i]
        {
            get { return (Student)journal[i]; }
            set
            {
                if (i > -1 && (value is Student))
                    journal.Add(value);
            }
        }
 
        public int Length
        {
            get { return journal.Count; }
        }
 
        public IEnumerator GetEnumerator()
        {
            foreach (object o in journal)
                yield return o;
        }
 
 
        public int CompareTo(object obj)
        {
            return 0;
        }
 
    }

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


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

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

6   голосов , оценка 3.5 из 5
Похожие ответы