Сортировка коллекции - 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");
        }

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


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

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

14   голосов , оценка 3.786 из 5