2014-09-08 4 views
0

방법 계층 중 하나 개 중첩 된 목록을 가지고 아이의 선택에 따라 단지 부모 노드를 보여선택하고

A--A1---A2 
|  | 
|  A21 
| 
B--B1---B2 
| |  | 
| B11 B21 
| 
C--C1---C2 
| |  | 
| C11 C21 

이제 내 slection에가 잎 노드에만 즉, B21 만 B-B2에있을 것입니다 - B21-해야한다 내 목록에.

B----B2 
|  | 
| B21 
| 

내가 똑똑 방법이나 내가 어떤 노드가 NAD 부모가 나타납니다 전달합니다 모든 기능에 어떻게 할 수 있습니다. 부모 모두와 노드의 순서를 얻는 것은 매우 간단하다

+3

코드가 어떻게 구조화되어 있는지에 대해 자세히 알려줘야합니다. 이 항목을 저장하고 액세스하는 방법에 전적으로 달려 있습니다. – Chris

+1

직접 부모를 볼 수 있습니다. 노드가 선택된 노드의 부모 인 경우이를 포함시키는 등의 반복 작업을 피하기 위해 while 루프에서이 작업을 수행 할 수 있습니다. 'while (node.Parent! = null) {nodeList.Add (node.Parent); node = node.Parent; }' – Charleh

+0

@Mashton : 질문이 업데이트되어 '-'와 '|'가 모두 하나의 묶음으로 붕괴됩니다. 바라건대 새로 고침이 그 우려를 완화시켜야합니다 ... – Chris

답변

1

each node has a reference to its parent 이후 :

var Ancestors = Ancestors(node, n => n.Parent); 
:

public static IEnumerable<T> Ancestors<T>(T node, Func<T, T> parentSelector) 
{ 
    T current = node; 
    while(current != null) 
    { 
     yield return current; 
     current = parentSelector(current); 
    } 
} 

는 그런 부모를 얻는 방법을 나타내는 노드와 함수에 전달할 수 있습니다