我有以下类(稍微缩短了一点(,并尝试删除一个菜单项:
public class LinkItem
{
public string LinkName { get; set; }
}
public class MenuItem
{
List<LinkItem> _LinkItems = new List<LinkItem>();
List<MenuItem> _MenuItems = new List<MenuItem>();
public string MenuName { get; set; }
public void AddLinkItem(LinkItem LinkItemToAdd)
{
LinkItems.Add(LinkItemToAdd);
}
public void DeleteLinkItem(LinkItem LinkItemToDelete)
{
LinkItems.Remove(LinkItemToDelete);
}
public void AddMenuItem(MenuItem MenuItemToAdd)
{
MenuItems.Add(MenuItemToAdd);
}
public void DeleteMenuItem(MenuItem MenuItemToDelete)
{
MenuItems.Remove(MenuItemToDelete);
}
public List<LinkItem> LinkItems
{
get { return _LinkItems; }
set { _LinkItems = value; }
}
//private List<MenuItem> _ListOfMenuItems;
public List<MenuItem> MenuItems
{
get { return _MenuItems; }
set { _MenuItems = value; }
}
}
public static class FullMenu
{
static CompleteMenu()
{
_CompleteMenuItems = new List<MenuItem>();
}
private static List<MenuItem> _MenuItems;
public static List<MenuItem> MenuItems
{
get
{
return _CompleteMenuItems;
}
set
{
_CompleteMenuItems = value;
}
}
}
然后我添加了一些项目,结构看起来像:
完整菜单 -
-> 菜单项 1
----> 链接项
1 --> 菜单项 2
------> 子菜单项 1
-------->
子链接项 1
------> 链接项 2
--> 菜单项 3
----> 链接项3
所以它是一个嵌套结构。
如果我想删除一个菜单项(例如子菜单项 1(,我必须在嵌套结构中找到它才能删除它。
有没有办法(使用 linq 或 lambda(搜索菜单项而不遍历 FullMenu 的所有项?
我尝试过的所有事情都只能在 FullMenu 的第一级中找到项目。
将您添加的任何内容存储在Dictionary<string, object>
中,其中string
类似于 id 的东西,您可以从中识别项目。 object
是LinkItem
或MenuItem
的实际实例。
当您决定删除某个项目时,请使用键从字典中获取该项目,然后将其删除。