private void RefreshMainComboListItem(ComboItem selected) { MainViewItems.Clear(); Func <ViewItem, bool> predict = item => true; if (!selected.IsAll) { if (selected.IsUncategorized) { predict = item => item.Mod.Mod.Category.Count == 0; } else if (selected.IsIgnoreList) { predict = item => item.Mod.IsIgnoreCollision; } else if (selected.IsConflicted) { predict = item => item.Mod.IsHaveCollision; } else { predict = item => { if (item.Mod.Mod.Category.Contains(selected.Category as L4D2Type.Category)) { return(true); } foreach (var sub in item.Mod.Mod.Category) { if (sub.Parent == (selected.Category as L4D2Type.Category)) { return(true); } } return(false); } }; } MainViewItems.AddRange(AllViewItems.Where(predict)); }
private void RefreshSubComboListItem(ComboItem selected) { SubViewItems.Clear(); Func <ViewItem, bool> predict = (item) => true; if (!selected.IsAll) { var category = (SubComboBox.SelectedItem as ComboItem)?.Value as L4D2Type.Category; if (selected.IsUncategorized) { predict = item => { var main = (MainComboBox.SelectedItem as ComboItem)?.Value as L4D2Type.Category; Logging.Assert(main != null); var all = main.Children; var have = item.Mod.Mod.Category; return(have.Union(all).Count() == 0); } } ; else if (selected.IsIgnoreList) { predict = item => item.Mod.IsIgnoreCollision; } else if (selected.IsConflicted) { predict = item => item.Mod.IsHaveCollision; } else { predict = item => item.Mod.Mod.Category.Contains(category); } } SubViewItems.AddRange(MainViewItems.Where(predict)); UpdateSearch(); }