2016-10-29 2 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

이것은 그룹화 된 조인이며 계층 적 데이터 구조를 원할 때 사용됩니다. 자녀가없는 네 부모가 나타납니다. – James

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

업데이트

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 부모 데이터 리터입니까? 조인을 기반으로 계층 구조를 제공합니까 ?? – James

관련 문제