Сортировка коллекции - C# (186388)
Формулировка задачи:
Доброго времени суток.
Имеется:
На входе имеются данные (в прикрепленном изображении).
Я их группирую по дню недели (используя поле класса).
Необходимо их отсортировать по дню (второе прикрепленное изображение).
Пробовал по разному, но сильно туплю на данном моменте.
Не могли бы вы посоветовать каким образом следует провести сортировку?
public class Event { #region Properties public string TimeFrame { get { return TimeStart.ToString("HH:mm") + " - " + TimeEnd.ToString("HH:mm"); } } #endregion #region Fields And Props #region Fields private DateTime timeStart; private DateTime timeEnd; private string eventName; private string description; private string persons; private string location; private EventType type; #endregion #region Props public EventType Type { get { return type; } set { type = value; } } public string Location { get { return location; } set { location = value; } } public string Persons { get { return persons; } set { persons = value; } } public string Description { get { return description; } set { description = value; } } public string EventName { get { return eventName; } set { eventName = value; } } public DateTime TimeEnd { get { return timeEnd; } set { timeEnd = value; } } public DateTime TimeStart { get { return timeStart; } set { timeStart = value; } } #endregion #endregion #region CONSTRUKTOREN //... #endregion } public class iDay : ObservableCollection<Event> { public string Day { get; set; } public iDay(IEnumerable<Event> collection) { var orderedCollection = collection.OrderBy(x => x.Description).ToList(); foreach (var event_ in orderedCollection) { Add(event_); } Day = this[0].TimeStart.ToString("d"); } } public class iWeek : ObservableCollection<iDay> { public string WeekRange { get; set; } public iWeek(List<Event> list) { foreach (var item in list.GroupBy(x => x.TimeStart.DayOfWeek)) { Add(new iDay(item)); } var min = list.Min(x => x.TimeStart); if (min.DayOfWeek != DayOfWeek.Monday) min = min.AddDays(-(int)min.DayOfWeek + 1); var max = list.Max(x => x.TimeStart); if (max.DayOfWeek != DayOfWeek.Saturday || max.DayOfWeek != DayOfWeek.Sunday) max = max.AddDays(-(int)max.DayOfWeek + 7); WeekRange = min.ToString("d") + " - " + max.ToString("d"); } }
Решение задачи: «Сортировка коллекции»
textual
Листинг программы
public iWeek(List<Event> list) { List<iDay> temp = new List<iDay>(); foreach (var item in list.GroupBy(x => x.TimeStart.DayOfWeek)) { temp.Add(new iDay(item)); } foreach (var item in temp.OrderBy(x => x.Day)) { Add(item); } var min = list.Min(x => x.TimeStart); if (min.DayOfWeek != DayOfWeek.Monday) min = min.AddDays(-(int)min.DayOfWeek + 1); var max = list.Max(x => x.TimeStart); if (max.DayOfWeek != DayOfWeek.Saturday || max.DayOfWeek != DayOfWeek.Sunday) max = max.AddDays(-(int)max.DayOfWeek + 7); WeekRange = min.ToString("d") + " - " + max.ToString("d"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д