Запрос 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);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д