Обычно я делаю запрос типа отчета, в котором я собираю данные из нескольких таблиц и оставляю их в одной таблице.
это выглядит примерно так:
var docs = from x in DB.Docs
group x by x.PersonId into g
select new {
g.Key,
totalSent = g.Sum(x => x.SentDate.HasValue ? 1 : 0),
lastSent = g.Max(x => x.SentDate)
...
};
var summary = from x in DB.People
from y in docs.Where(y => y.Key == x.Id).DefaultIfEmpty()
select new {
x.Id,
x.Name,
y.totalSent,
y.lastSent
}
Я бы ожидал, что этот созданный sql, который остался, соединил DB.People
с результатами docs
, но вместо этого я получил некоторые сумасшедшие вещи CROSS APPLY(( SELECT NULL AS [EMPTY]) as [t1] OUTER APPLY ...
.
Я пробовал каждый вариант синтаксиса левого соединения, который я могу себе представить, я даже обернул docs
в другой запрос, и я получил то же самое.
Чего мне не хватает?