我有一個List<Category>
其中Category
是:通過IList中的幾個對象「圖層」進行LINQ查詢?
public class Category {
public List<Category> Categories { get; set; } // this holds sub-categories
public string Name { get; set; }
public string Icon { get; set; }
public string Id { get; set; }
}
由於Categories
本身是另一個List<Category>
它可能包含的子類別,而這些子類可以包含子類,等等...
我知道我可以查詢過去的第一個「層」,例如:
Categories.Where(x => x.Categories.Any(c => c.Id == id)).FirstOrDefault();
我怎樣纔能有效地查詢特定Category
通過Id
,或許是對象樹中的3,4或5層深度(最多隻有3層,但爲了將來的參考我想知道)?
編輯
此外,我怎麼能得到整個對象樹,一路攀升到頂級Category
,如果我只有一個子類3層深的Id
?
完美!非常感謝! – Chaddeus
如果你真的只希望得到一個(或零)結果,你應該使用SingleOrDefault(),你忽略了重複,看起來它們要麼是錯誤,要麼應該是結果的一部分 –