2011-02-28 6 views
1

으로 궁극적 인 부모를 찾기 : 폴더가 루트 폴더 인 경우C#을 나는 다음과 같은 구조의 계층 적 객체가 LINQ

public class Folder 
{ 
    public Folder Parent { get; set; } 
    public IList<Folder> Child { get; set; } 
} 

를, 학부모는 null 될 것입니다. 폴더가 루트가 아닌 경우 부모는 not null입니다.

폴더의 궁극적 인 부모를 찾으려면 루트 폴더 (존재하는 경우) (not null)가 필요합니다.

가능한 경우 while 루프를 피하기 위해 참조 할 것입니다. 가능한 경우 Linq 표현식을 사용하여 완성하고 싶습니다.

+1

왜 while 회피를 피합니까? LINQ to SQL 또는 비슷한 것을 사용하고 있습니까? 이것이 LINQ to Objects 인 경우 LINQ 기반 솔루션은 코드 또는 LINQ 코드에 상관없이 어떤 종류의 루프를 수행합니다. – StriplingWarrior

답변

11

while 루프를 사용하는 것이 가장 빠른 방법 일 경우 왜 피하지 않으면 좋을까요?

Folder root = myFolder; 
while(root.Parent != null) root = myFolder.Parent; 
+0

예.하지만 이것은 while 루프를 사용하여 수행됩니다. 덜 비싼 방법이 있습니까? – Raffaeu

+2

@Raffaeu 내가 생각할 수있는 LINQ로이 작업을 수행하는 방법은 훨씬 더 비쌉니다. 나는 더 빠르거나 더 낮은 메모리 사용량을 가진 것을 상상할 수 없다. –

+0

고맙습니다. 지금 당장 사용하겠습니다. – Raffaeu

관련 문제