Эта ужасная вещь работает:
var persons = context.Persons
.Concat(context.Employees
.Where(e => e.Compensation.Amount >= 0))
.Concat(context.Visitors
.Where(v => v.SomeProperty == "AlwaysTrue"));
Я не уверен почему, но когда вы фильтруете свойство объекта, объект свойства загружается с нетерпением.Если вы не хотите фильтровать это свойство, используйте условие, которое всегда будет истинным.
Отказ от ответственности: я понятия не имею, насколько эффективен результирующий запрос.Я проверил SQL, сгенерированный, когда я тестировал это в немного более сложном сценарии, и он был очень очень большим.