2011-02-28 125 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 2011-02-28 17:56:59

回答

11

为什么要避免while循环,如果它是最快的方法呢?

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

是的,但是这是使用while循环完成的。有没有更便宜的方法? – Raffaeu 2011-02-28 17:46:54

+2

@Raffaeu无论如何,你要用LINQ来做到这一点,我能想到的将会更加昂贵。我无法想象任何更快或更低的内存占用。 – 2011-02-28 17:49:34

+0

谢谢我现在就用这个​​。 – Raffaeu 2011-02-28 18:32:31