Дано класс день рождение сотрудников с полями int day, int month, int year
заполняем список.
А теперь надо как то его отсортировать, что бы он был отсортирован от меньшего к большему по дням, месяца, годам... не могу понять как же сделать это
C#
ХЕЛП. Помогите отсортировать список. С#
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}";
}
}
}
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}";
}
}
}
1) написать свой компаратор.
2) просто через linq создать новый, отсортированный список. list.OrderBy(x => x.Day).ThenBy(x => x.Month).ToList()
2) просто через linq создать новый, отсортированный список. list.OrderBy(x => x.Day).ThenBy(x => x.Month).ToList()
Похожие вопросы
- Код на юнити хелп плиз
- Ребет помогите немного разобраться с С#
- Помогите с кодом C#!!
- Помогите разобраться с заданием! C#
- ПОМОГИТЕ ПОЖАЛУЙСТА, ОТДАМ ВСЕ СВОЁ ИМУЩЕСТВО
- Помогите, делаю игру 2д юнити!!!
- Помогите исправить код на C#
- Помогите пожалуйста написать две программы и составить к ним алгоритм. Ну никак уже не получается...
- C# помогите написать простую прогу
- Помогите пожалуйста. Написать на C#
BirthdayPerson.ImprimirBDay(list);
дни нормально сортирует а месяц и год нет, в чем ошибка?
1 12 1997
2 3 1990
3 4 1993