2016-07-31 1 views
0

linq 문을 사용하여 Child 콜렉션을 가진 IEnumerable<Parent>을 생성 중입니다. 나는 initiator 블록 안에서 Parent to Child를 전달할 수 있기를 원합니다. 시 객체가 Select 인스턴스화하는 아이들이 Parent 객체가 아직 초기화되지 않았기 때문에이니셜 라이저 블록 내부에서 호출 객체 전달

class Parent 
{ 
    IEnumerable<Child> Children { get; set; } 
} 
class Child 
{ 
    Parent Parent { get; set; } 
} 
//This is what i want to do 
someList.Select(x => new Parent 
    { 
     Children = x.childList.Select(c => new Child 
      { 
       Parent = //How do i get this? 
      } 
    }); 

답변

1

당신은, 이런 식으로 할 수 없습니다. 본질적으로 닭고기와 달걀 문제입니다.

그러나이 같은 중괄호와 대리자를 사용할 수 있습니다

x => { 
    var p = new Parent(); 
    p.Children = x.childList.Select(
     c => new Child { Parent = p } 
    ); 
    return p; 
} 
+0

중괄호가 작동합니다. 솔직히 말해서, 내 일부는 이것을 유지하기 위해 이것을 고르는 Javascript 개발자가되기를 바라고 있습니다. 왜냐하면 하나님이 이것을 염두에두고 메소드 포인터를 작성하지 않았기 때문입니다 ... –

관련 문제