public static LayoutMenu FirstNested(this IEnumerable <LayoutMenu> menus, Func <LayoutMenu, bool> func) { var mLi = menus.ToList(); OutMenu = mLi.FirstOrDefault(func); if (OutMenu != null) { return(OutMenu); } DelegateFirst(mLi, func); return(OutMenu); }
private static void DelegateFirst(List <LayoutMenu> menus, Func <LayoutMenu, bool> func) { menus.ForEach(menu => { var m = menu.SubMenus.FirstOrDefault(func); if (m != null) { OutMenu = m; return; } if (menu.SubMenus.Any()) { DelegateFirst(menu.SubMenus, func); } }); }