MenuItem に次のクラスが定義されています
public class MenuItem
{
public int Id { get; set; }
public string Key { get; set; }
public int ParentId { get; set; }
public string Url { get; set; }
}
また、以下はすべてのメニュー項目のコレクションです
List<MenuItem> allMenu=new List<MenuItem>
{new MenuItem{Id=1,Key="Level1-A",Url="url1"},
{new MenuItem{Id=2,Key="Level1-B",Url="url2"},
{new MenuItem{Id=3,Key="Level2-A",Url="url3", ParentId=1},
{new MenuItem{Id=4,Key="Level3-AA",Url="url1", ParentId=3}};
これで、DB から取得したメニュー項目は 1 つだけになりました。Level3-AA
MenuItem item=new MenuItem{Id=4,Key="Level3-AA",Url="url1", ParentId=3};
allMenu.FindAll(m=>m.Id==item.Id) //gives only one element Level3-AA
//しかし、すべての親 ID menuitem も含める必要があります。
この場合Level2-A
とLevel1-A
これをC#に含めるにはどうすればよいですか? LINQ または任意の拡張メソッドの使用を歓迎します