ArrayList отсортировать по одному из полей - C#
Формулировка задачи:
как мне отсортировать Список journal по именам по алфавиту?
как мне отсортировать Список journal по именам по алфавиту?
P.S. Все фамилии , кроме Сотникова, подчеркнуло красным цветом(не в ВС , а на сайте), обрадую парня =)))
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;
}
}
}Решение задачи: «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;
}
}