Ich habe Sammlung von Menü-Objekt und jedes Menü-Objekt kann mehrere Kinder-Menüs und das kann auch mehrere Kinder-Menüs und so weiter haben.Verschachtelte Objekt Filterung in C#
MenuID
MenuName
IsActive
Children
MenuID
MenuName
IsActive
Children
MenuID
MenuName
IsActive
Children
Ich möchte nur aktive Menüs filtern. Wie macht man das?
Ich versuchte mit rekursiv, aber kein Glück.
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);
}
}
}
}
}
}
}
Bitte senden Sie Ihren Code, bis die Sie –
versucht haben, ich denke, die 'IsActive' Eigenschaft mit @mark_h –
Es gibt keine nicht-destruktive Weise die ursprünglichen Menüobjekte zurück, mit den gefilterten Kindern. Sie müssen neue Menüobjekte mit übereinstimmenden IDs erstellen, oder Sie müssen die Filterung der untergeordneten Elemente auf den Aufrufer verzögern oder Sie müssen die nicht aktiven Menüelemente vollständig entfernen. Wähle eins. – hvd