Запрос LINQ для проверки что преподаватель не читает несколько предметов одновременно - C#
Формулировка задачи:
Добрый день.
Имеется класс с полями (расписание занятий):
Коллекция(которая заполнена):
Хочу проверить что: один и тот же преподаватель не ведет разные предметы в один и тот же на одной и той же паре (как-то сложно получилось).
Проще: Хочу проверить, что Иванов И.И. который читает у первого курса в понедельник на первой паре Физику в это же время не читал Химию у кого-то ещё.
Это реально через Linq сделать, или через циклы (загоняю в память первую пару, первое занятие, первый кабинет, первый предмет и сравниваю с остальными)?
public class Blok { public int kurs { get; set; } public int den_ned { get; set; } public int para { get; set; } public string predmet { get; set; } public string auditoriya { get; set; } public string prepodavatel { get; set; } ... }
List<Blok> zanyatie = new List<Blok>();
for (int d=1; d<7;d++) // перебираем дни недели { for (int p=1; p<7;p++) // перебираем пары { var proverka1 = from temp in zanyatie where ((temp.kurs == 1) && (temp.den_ned == d) && (temp.para == p)) /*дальше надо вставить условие что (prepodavatel1=prepodavatel2) и (predmet1 !=predmet2) */ } }
Решение задачи: «Запрос LINQ для проверки что преподаватель не читает несколько предметов одновременно»
textual
Листинг программы
IEnumerable<Blok> conflicts = zanyatie.GroupBy(z => new { z.den_ned, z.para, z.prepodavatel }).Where(g => g.Count() > 1).SelectMany(g => g); foreach (Blok blok in conflicts) { textBox1.Text += string.Format("День: {0}, Пара={1}, Преподаватель={2}\r\n", blok.den_ned, blok.para, blok.prepodavatel); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д