我有菜单对象的集合,每个菜单对象可以有多个子菜单,也可以有多个子菜单等等。在C中嵌套对象过滤#
MenuID
MenuName
IsActive
Children
MenuID
MenuName
IsActive
Children
MenuID
MenuName
IsActive
Children
我只想过滤活动菜单。这个怎么做?
我尝试了递归,但没有运气。
private void FilterDeletedRecord(List<Menu> menus)
{
if (menus != null && menus.Count > 0)
{
foreach (Menu item in menus)
{
if (item.Children != null && item.Children.Count > 0)
{
item.Children = item.Children.Where(x => !x.IsDeleted).ToList();
if (item.Children != null && item.Children.Count > 0)
{
foreach (Menu m in item.Children)
{
if (m.Children != null && m.Children.Count > 0)
{
FilterDeletedRecord(m.Children);
}
}
}
}
}
}
}
请发表您的代码,直到你已经尝试 –
我觉得用'IsActive'财产@mark_h –
有没有非破坏性的方法,返回原始菜单对象,用过滤的孩子们。您必须创建具有匹配ID的新菜单对象,或者必须延迟向调用方过滤孩子,或者必须彻底破坏性地删除非活动菜单项。选一个。 – hvd