2016-10-29 3 views
2

У меня есть две отдельные коллекции экземпляры, заполненные даннымиСоздание родителя -> дети иерархии из двух коллекций

List<Parent> parents; 
List<Child> children; 

две коллекции могут быть подключены через Child.ParentId и Parent.Children.

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

ответ

1

Попробуйте это:

var result = from d in parents 
      join s in children 
      on d.ParentID equals s.ParentID into g 
      select new 
      { 
       ParentName = d.ParentName, 
       ChildList = g 
      }; 

foreach (var item in result) 
{ 
    Console.WriteLine("Parent: {0}", item.ParentName); 
    foreach (var Child in item.ChildList) 
    { 
     Console.WriteLine(Child.Name); 
    } 
    Console.WriteLine(); 
} 
+0

Привет, спасибо за быстрый ответ. Чтобы быть ясным, это левая операция, родители без детей все равно будут присутствовать? – Goran

+0

это Grouped Join, и это используется, когда нам нужна иерархическая структура данных, да, родитель без ребенка будет присутствовать. – James

1
children.Join(parents, 
       c => c.ParentId, 
       p => p.ParentId, 
       (c, p) => new { children = c, parents = p }) 
       .Select(x => x.parents).ToList(); 

Update

var result = parents.Join(children, 
        p => p.ParentId, 
        c => c.ParentId, 
        (p,c) => new { parents = p,children = c }) 
        .Select(x => new 
        { 
         ParentName = x.parents.ParentName, 
         ChildList= x.children 
        }) 
        //.GroupBy(x=>x.ParentName) 
        .ToList(); 
+0

@ goran- этот код будет только gv me parent data rit? основанный на соединении, обеспечит ли это иерархию? – James