using System.Collections.Generic; using System.Linq; namespace NBF { public static class TabItemDataExtensions { /// /// 为TabItemData列表添加"全部"选项卡 /// /// 原始选项卡列表 /// /// 包含"全部"选项卡的新列表 public static void AddAllTabItem(this List tabItems, bool addListTitle = false) { //判断是否存在二级目录,有二级目录则只在二级目录有"全部"选项卡 if (tabItems.Any(tabItem => tabItem.Children.Count > 0)) { foreach (var tabItemData in tabItems) { if (tabItemData.Children.Count > 0) { var allTab = new TabItemData { Id = 0, Key = "All", Icon = "All", IsAll = true, Items = GetAllItemsFromTabs(tabItemData.Children, addListTitle) }; tabItemData.Children.Insert(0, allTab); } } } else { var allTab = new TabItemData { Id = 0, Key = "All", Icon = "All", IsAll = true, Items = GetAllItemsFromTabs(tabItems, addListTitle) }; tabItems.Insert(0, allTab); } } /// /// 递归获取所有选项卡中的项目(去重) /// private static List GetAllItemsFromTabs(List tabs, bool addListTitle = false) { var allItems = new List(); foreach (var tab in tabs) { allItems.Add(new ClassifyListTitleData() { Title = tab.Key }); // 添加当前选项卡的项目 if (tab.Items != null) { allItems.AddRange(tab.Items); } } // 去重处理(基于引用相等,如果需要基于内容去重需要重写Equals方法) return allItems.Distinct().ToList(); } public static void TabItemDataAddListTitle(this TabItemData tabItem) { if (tabItem.Items == null || tabItem.Items.Count < 1) return; var hasListTitle = tabItem.Items.OfType().Any(); if (!hasListTitle) { tabItem.Items.Insert(0, new ClassifyListTitleData() { Title = tabItem.Key }); } } } }