Советую ленивую загрузку или присоединиться к запросу.
Вероятно, вывод SQL - это запрос;
(SELECT .. FROM table1 WHERE ID in (...)) AS T1
(INNER, FULL) JOIN (SELECT .. FROM table2) AS T2 ON T1.PK = T2.FOREIGNKEY
(INNER, FULL) JOIN (SELECT .. FROM table3) AS T3 ON T1.PK = T3.FOREIGNKEY
(INNER, FULL) JOIN (SELECT .. FROM table4) AS T4 ON T1.PK = T4.FOREIGNKEY
Но если вы можете использовать отложенную загрузку, нет необходимости использовать функцию Include (). И ленивая загрузка решит вашу проблему.
Другие, вы можете написать с запросом присоединения,
var query = from i in this.Items.Where(w=>demoIds.Contains(w.Id))
join d1 in demo1 on i.Id equals d1.FK
join d2 in demo2 on i.Id equals d2.FK
join d3 in demo3 on i.Id equals d3.FK
select new ... { };
Эти два решения решают все ваши проблемы.
Если проблема не исчезнет, я настоятельно рекомендую сохранить процедуру.