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

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

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

Добрый день. Имеется класс с полями (расписание занятий):
Листинг программы
  1. public class Blok
  2. {
  3. public int kurs { get; set; }
  4. public int den_ned { get; set; }
  5. public int para { get; set; }
  6. public string predmet { get; set; }
  7. public string auditoriya { get; set; }
  8. public string prepodavatel { get; set; }
  9. ...
  10. }
Коллекция(которая заполнена):
Листинг программы
  1. List<Blok> zanyatie = new List<Blok>();
Хочу проверить что: один и тот же преподаватель не ведет разные предметы в один и тот же на одной и той же паре (как-то сложно получилось). Проще: Хочу проверить, что Иванов И.И. который читает у первого курса в понедельник на первой паре Физику в это же время не читал Химию у кого-то ещё.
Листинг программы
  1. for (int d=1; d<7;d++) // перебираем дни недели
  2. {
  3. for (int p=1; p<7;p++) // перебираем пары
  4. {
  5. var proverka1 =
  6. from temp in zanyatie
  7. where ((temp.kurs == 1) && (temp.den_ned == d) && (temp.para == p))
  8. /*дальше надо вставить условие что (prepodavatel1=prepodavatel2) и (predmet1 !=predmet2) */
  9. }
  10. }
Это реально через Linq сделать, или через циклы (загоняю в память первую пару, первое занятие, первый кабинет, первый предмет и сравниваю с остальными)?

Решение задачи: «Запрос LINQ для проверки что преподаватель не читает несколько предметов одновременно»

textual
Листинг программы
  1. IEnumerable<Blok> conflicts = zanyatie.GroupBy(z => new { z.den_ned, z.para, z.prepodavatel }).Where(g => g.Count() > 1).SelectMany(g => g);
  2. foreach (Blok blok in conflicts)
  3. {
  4.     textBox1.Text += string.Format("День: {0}, Пара={1}, Преподаватель={2}\r\n", blok.den_ned, blok.para, blok.prepodavatel);
  5. }

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


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

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

11   голосов , оценка 3.818 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы