На самом деле должно быть:
School.Select(x => x.PERSON as DAL.TEACHER)
Помните, что вы пытаетесь привести PERSON
к TEACHER
, поэтому внутри делегата. Результат School.Select(x => x.PERSON)
сам по себе является на самом деле IEnumerable<PERSON>
, который не может быть преобразован в IEnumerable<TEACHER>
.
Еще одна вещь - если некоторые PERSON
экземпляры на самом деле не являются TEACHER
s (т.е. вместо них STUDENT
s), вы получите в итоге null
ссылки в выходных данных. Если PERSON
может быть более одного типа, вы, вероятно, захотите записать его следующим образом:
School.Select(x => x.PERSON).OfType<DAL.TEACHER>();
Это фактически отфильтрует все PERSON
сущности, которые не являются TEACHER
с, так что вы получите только TEACHER
экземпляров в последовательности (без нуля).
Также обратите внимание, что синтаксис from x in y
является «запросом» (в частности, синтаксис понимания запроса ). Вторая форма - это лямбда-синтаксис.