Linq to Sql GroupJoin Paging странность - PullRequest
3 голосов
/ 12 мая 2010

Я заметил странный перевод Sql в запросе LinqToSql, который я пытался оптимизировать.

Если я выполню следующее

Recipients.GroupJoin(
        RecipientAttributes, 
        x => x.Recipient_Id, 
        y => y.Recipient_Id, 
        (x,y) => new {Recipient = x, Attributes = y})
    .Skip(1)
    .Take(1000)

Он выполняется в одном запросе, как и ожидалось.

Однако

Recipients.GroupJoin(
        RecipientAttributes, 
        x => x.Recipient_Id, 
        y => y.Recipient_Id, 
        (x,y) => new {Recipient = x, Attributes = y})
    .Skip(0)
    .Take(1000)

выполняется в отдельном запросе для каждого выбора атрибутов.

Удаление пропуска (0) также не имеет значения.

Может кто-нибудь объяснить это, и есть ли что-то, что я могу сделать, чтобы запрос первой страницы выполнялся в одном выражении SQL?

...