Linq Lambda GroupПрисоединение и ToList () - PullRequest
0 голосов
/ 10 февраля 2020

Я использую в каркасе сущностей несколько GroupJoin для агрегирования списков элементов 'b' для мастера 'a'. Моя проблема заключается в том, что, как только я возвращаю объект query.ToList (), полученный из db, я не могу извлечь элементы IEnumerable, потому что я вне их контекста. Я хотел бы добавить .ToList() "bList.Tolist ()", но я думаю, что tolist там вызовет немедленное выполнение всего запроса с плохой производительностью. Можете ли вы мне помочь?

class Result
{
  IEnumerable<string> Strings { get; set; }
}
using (var context = new TicketingContext())
            {
                var query = context.A.GroupJoin(context.B,
                    a => a.IDA,
                    b => b.IDA,
                    (a, bList) => new { a, Result = new Result { Strings = bList } }
                    )
                var res = query.ToList();
            }

Мой вопрос: если я добавлю tolist (), как в следующем коде, весь запрос будет выполнен? Есть ли поворот?

using (var context = new TicketingContext())
            {
                var query = context.A.GroupJoin(context.B,
                    a => a.IDA,
                    b => b.IDA,
                    (a, bList) => new { a, Result = new Result { Strings = bList.**ToList()** } }
                    )
                var res = query.ToList();
            }

1 Ответ

0 голосов
/ 10 февраля 2020

Причина

Поскольку за пределами using(), dbContext располагается. Таким образом, вам нужно .ToList(), как вы sh.

 using (var context = new TicketingContext())
 {
     var res = context.A.GroupJoin(context.B,
                a => a.IDA,
                b => b.IDA,
                (a, bList) => new { a, Result = new Result { Strings = bList.ToList() } }
                ).ToList();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...