Предполагая, что существует список учителей и учеников, определенный в приведенной ниже последовательности.
Учитель
Ученик
Студент
Студент
Учитель
Студент
Учитель
Учитель может обучать себя и других учеников раньше, чем следующий учитель. Пример: №7 не может обучать №4 из-за этого правила. Все предметы в списке/последовательности необходимо обучать только один раз в наборе. Учитель не может учить другого учителя. Также существует правило порядка: учитель не может выбрать для обучения любого случайного ученика не по порядку. #1 преподавание только 2,4, но не 3 противоречит правилам.
Ожидаемый результат приведен ниже. Первый элемент в выводе следует читать так: #1 учит 1,2,3,4, #5 учит 5,6 и #7 учит 7. Второй элемент говорит, что #1 учит 1,2,3,4 и #5. учит 5, а №7 учит 6, 7.
Предполагая, что существует список учителей и учеников, определенный в приведенной ниже последовательности. [list] [*]Учитель [*]Ученик [*] Студент [*] Студент [*] Учитель [*] Студент Учитель [/list] Учитель может обучать себя и других учеников раньше, чем следующий учитель. Пример: №7 не может обучать №4 из-за этого правила. Все предметы в списке/последовательности необходимо обучать только один раз в наборе. Учитель не может учить другого учителя. Также существует правило порядка: учитель не может выбрать для обучения любого случайного ученика не по порядку. #1 преподавание только 2,4, но не 3 противоречит правилам. Ожидаемый результат приведен ниже. Первый элемент в выводе следует читать так: #1 учит 1,2,3,4, #5 учит 5,6 и #7 учит 7. Второй элемент говорит, что #1 учит 1,2,3,4 и #5. учит 5, а №7 учит 6, 7. [code][ { 1:1,2,3,4; 5:5,6 ; 7:7 }, { 1:1,2,3,4; 5:5 ; 7:6,7 }, { 1:1,2 ; 5:3,4,5,6 ; 7:7 }, { 1:1,2 ; 5:3,4,5 ; 7:6,7 }, { 1:1,2,3 ; 5:4,5,6 ; 7:7 }, { 1:1,2,3 ; 5:4,5 ; 7:6,7 }, { 1:1 ; 5:2,3,4,5,6; 7:7 }, { 1:1 ; 5:2,3,4,5 ; 7:6,7 } ] [/code] Я не думаю, что декартово произведение здесь поможет. [code]var items = teachers.SelectMany(x => students.Where(p => p.Sequence < x.Sequence ), (x, y) => new { TeacherSequence = x.Sequence , StudentSequence = y.Sequence })[/code] Есть идеи?