Ты рядом.Вам нужен первый элемент Lookup (результат имеющегося у вас GroupBy), а затем значения в этом элементе поиска, который вы хотите сгруппировать по FormId и вернуть учителей с наименее встречающимся из них..
var teachers = taughtSubjects
.GroupBy(ts => ts.SubjectId)
.OrderBy(g => g.Count())
.ThenBy(g=>g.Key) //tiebreaker
.First() //gets the IEnumerable of Teachers that teach this least-taught subject
.GroupBy(t=>t.FormId)
.OrderBy(g=>g.Count())
.ThenBy(g=>g.Key) //as a tiebreaker
.First() //gets the teacher(s) with the lowest specified FormId.
Это вернет IEnumerable of Teachers хотя бы с одним элементом, представляющим учителя, которые преподают наименее изученный предмет с наименее используемой формой.
Understandчто в вашей системе могут быть предметы, которые вообще не преподаются.Они не будут представлены здесь, потому что не существует учителя, который учит классу.В запросе будут учитываться предметы, по крайней мере, с одним учителем.
РЕДАКТИРОВАТЬ: После перечитывания вашего вопроса, я думаю, я понимаю, что происходит.Эти «преподаваемые предметы» относятся к определенному предмету (математике, чтению, естествознанию, искусству, музыке), который преподается к определенной «форме» или «уровню обучения» (1-12 класс в системе США).
Поскольку у вас в данный момент настроен объект, возможны повторяющиеся записи для того же предмета и оценки, но они будут неразличимы, кроме поля TaughtSubjectID (которое может быть просто назначено счетчиком или идентификатором).
Было бы более разумно, независимо от того, как вы хотите, чтобы это было сделано, также включить Учителя в Предмет Обучения.Это, например, позволит вам перечислить учителей, которые преподают предмет с наименьшим количеством предметов в классе с наименьшим количеством предметов по этому предмету, или, альтернативно, как предлагает Дэвид Б., наименее обучаемое общее сочетание предмета и класса.
Какой из них вы хотите, субъективен, и есть семантическая разница.Музыка может быть наименее изучаемым предметом (предлагается только 9-12 классам), но на каждом уровне обучения ее преподают два или три учителя.Математика, с другой стороны, может преподаваться на каждом уровне обучения с большим количеством учителей в целом и, таким образом, иметь большее количество записей TaughtSubject, чем Music, но из всей группы может быть только один учитель математики 6-го класса.Нахождение наименее обученного класса наименее изученного предмета даст вам музыку 9-го класса.Нахождение наименее изученной общей комбинации предметных оценок даст вам математику 6-го класса.