public BindingListView <GroupEntity> GetGroupsList(char type) { var list = (from g in Groups.Where(c => c.GroupType == type) join p in Persons.Where(c => c.PersonType == 'T') on g.TeacherId equals p.Id into joinP from p in joinP.DefaultIfEmpty() orderby g.Name select new GroupEntity { Id = g.Id, Name = g.Name, Level = g.Level, TeacherId = (p != null ? p.LastName + " " + p.FirstName : ""), StartEducationString = g.StartEducationString, IsActive = g.IsActive }).ToList(); list.ForEach(c => { var lessons = GroupsDays.Where(x => x.GroupId == c.Id).OrderBy(x => x.Day).ToList(); c.LessonsDays = string.Join(", ", lessons.Select( i => i.Day.DayOfWeek() + " " + i.StartTimeString + "-" + i.EndTimeString) .ToArray()); }); return(new BindingListView <GroupEntity>(list)); }
public ListViewItem[] GetScheduler(DateTime dStart) { var returnList = new List <ListViewItem>(); var list = (from gr in Groups join grDays in GroupsDays.Where(c => c.Day == (int)dStart.DayOfWeek) on gr.Id equals grDays.GroupId where gr.StartEducation <= dStart orderby grDays.StartTime, gr.GroupType select new SchedulerEvent { Name = gr.Name, BackColor = gr.GroupType == 'C' ? Color.GreenYellow : Color.LightCoral, Date = dStart.Date + grDays.StartTime.TimeOfDay, Time = grDays.StartTimeString + " - " + grDays.EndTimeString }).ToList(); list.AddRange((from gr in Events where gr.StartDate.Date == dStart orderby gr.StartDate, gr.EventType select new SchedulerEvent { Name = gr.EventName, BackColor = gr.EventType == 'M' ? Color.SkyBlue : Color.Plum, Date = gr.StartDate, Time = gr.StartTimeString + " - " + gr.EndTimeString }).ToList()); list = list.OrderBy(c => c.Date).ToList(); foreach (var item in list) { var listItem = new ListViewItem(item.Name); listItem.SubItems.Add(item.Time); listItem.BackColor = item.BackColor; returnList.Add(listItem); } return(returnList.ToArray()); }