2011-02-28 105 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