как улучшить LINQ-SQL-запрос - PullRequest
1 голос
/ 24 апреля 2019

Я выполняю следующий запрос в LINQPad:

Tickets.GroupJoin(UserRoles, t => t.AuthorId, r => r.UserId, (ticket, roles) => new {
    AuthorId = ticket.AuthorId,
    AuthorRoles = roles.Select(r => r.Role).Distinct(),
    Message = ticket.Message,
    Replies = ticket.TicketReplies.GroupJoin(UserRoles, reply => reply.AuthorId, role => role.UserId, (reply, roles2) => new {
        AuthorId = reply.AuthorId,
        AuthorRoles = roles2.Select(r => r.Role).Distinct(),
        Message = reply.Message
    })
}).Take(1000)

Где AuthorId - это string, AuthorRoles - список int с и Message a string. Этот запрос выполняет ужасно. В результате этого запроса из LINQPad отправляется более 2000 запросов.

  • Почему LINQPad не может перевести это в один запрос SQL?
  • Могу ли я сформулировать свой запрос по-другому, чтобы LINQPad мог работать лучше?
...