Объединить коллекцию GroupJoin с родительским объектом «на лету» - PullRequest
0 голосов
/ 04 июня 2019

Я смотрел на этот ответ и задавался вопросом, может ли теперь быть более лаконичный способ объединения двух сторон GroupJoin, то есть присоединения коллекции Children правой стороны непосредственно к Parent.

Автор предлагает,

var parentChildrenQry =
    parents.GroupJoin(children, parent.Id, child.ParentId, new { (parent, childGrp) => new { Parent = parent, Children = childGrp.ToList() } );

foreach(var grp in parentChildrenQry) {
    grp.Parent.Children = grp.Children;
}

Но не можем ли мы исключить этот foreach шаг выше и просто объединить их в resultSelector?

Полагаю, можно также заново создать новые объекты в resultSelector, т.е.

var myCompleteObjects =
    parents.GroupJoin(children, parent.Id, child.ParentId, 
       (parent, childGrp) => new CompleteObject
        { Id = parent.Id, 
          Name = parent.Name,
          Children = childGrp.ToList() 
        }).ToList();

Но это может быть довольно долго для больших объектов. Я думал, что Select или SelectMany могли бы помочь, но я не могу найти пример того, как они достигли этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...