C#

ХЕЛП. Помогите отсортировать список. С#

Дано класс день рождение сотрудников с полями int day, int month, int year

заполняем список.

А теперь надо как то его отсортировать, что бы он был отсортирован от меньшего к большему по дням, месяца, годам... не могу понять как же сделать это
Almat Saktaganov
Almat Saktaganov
562
using System;
using System.Collections.Generic;
namespace Answer {
class Program {
static void Main() {
var list = new List<Birthday>();
Console.Write("Количество данных в списке: ");
var n = int.Parse(Console.ReadLine());
for (var i = 0; i < n; ++i) {
var birthday = InputBirthday();
list.Add(birthday);
Console.WriteLine();
}
Console.WriteLine("Отсортированный список:");
list = SortBubble(list);
foreach (var item in list) Console.WriteLine(item);
Console.ReadKey();
}
static Birthday InputBirthday() {
return new Birthday {
Day = Integer("Число: "),
Month = Integer("Месяц: "),
Year = Integer("Год рождения: ")
};
}
static List<Birthday> SortBubble(List<Birthday> list) {
Birthday temp;
for (var i = 0; i < list.Count - 1; ++i) {
for (var j = 0; j < list.Count - i - 1; ++j) {
if (list[j + 1] < list[j]) {
temp = list[j + 1];
list[j + 1] = list[j];
list[j] = temp;
}
}
}
return list;
}
static int Integer(string msg) {
int value;
do {
Console.Write(msg);
} while (!int.TryParse(Console.ReadLine(), out value));
return value;
}
}
class Birthday {
public Birthday() {
Day = Month = Year = 0;
}
public int Day { get; set; }
public int Month { get; set; }
public int Year { get; set; }
public static bool operator>(Birthday a, Birthday b) {
if (a.Year > b.Year) return true;
if (a.Year == b.Year && a.Month > b.Month) return true;
if (a.Month == b.Month && a.Day > b.Day) return true;
return false;
}
public static bool operator<(Birthday a, Birthday b) {
if (a.Year < b.Year) return true;
if (a.Year == b.Year && a.Month < b.Month) return true;
if (a.Month == b.Month && a.Day < b.Day) return true;
return false;
}
public override string ToString() {
return $"{Day:D2}.{Month:D2}.{Year:D2}";
}
}
}
Режимно Диспетчерская
Режимно Диспетчерская
52 726
Лучший ответ
1) написать свой компаратор.
2) просто через linq создать новый, отсортированный список. list.OrderBy(x => x.Day).ThenBy(x => x.Month).ToList()
Almat Saktaganov я как дубина, надо почитать че это...
Almat Saktaganov var list = lista_cumple.OrderBy(x => x.GetDay()).ThenBy(x => x.GetMonth()).ThenBy(x=>x.GetYear()).ToList();
BirthdayPerson.ImprimirBDay(list);

дни нормально сортирует а месяц и год нет, в чем ошибка?

1 12 1997
2 3 1990
3 4 1993