Запрос 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);
}