Запрос LINQ для проверки что преподаватель не читает несколько предметов одновременно - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Имеется класс с полями (расписание занятий):
    
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 сделать, или через циклы (загоняю в память первую пару, первое занятие, первый кабинет, первый предмет и сравниваю с остальными)?

Решение задачи: «Запрос 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);
}

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


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

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

11   голосов , оценка 3.818 из 5
Похожие ответы