Вы вызываете два разных метода с вашим "переупорядочением".
Вы не показываете типы allSchedulesOnALine
или allSchedulesUnscheduled
, но я держу пари, что allSchedulesOnALine
имеет тип IEnumerable<Schedule>
, а allSchedulesUnscheduled
имеет тип IQueryable<Schedule>
.
Поэтому, когда вы вызываете Queryable.Union , вы просите EF перевести выражение в SQL.Но передаваемый аргумент имеет тип IEnumerable<Schedule>
, и он не может преобразовать это в запрос.
С другой стороны, когда вы вызываете Enumerable.Union , вы просите LINQ to Objects сделать все это в памяти, что работает нормально, хотя, возможно, и медленнее.
Таким образом, причина в том, что поведение отличается тем, что вы вызываете два совершенно разных метода,которые делают разные вещи, но имеют одно и то же имя.Нет, это не ошибка.