/// <summary> /// 克隆 /// </summary> /// <returns>查询SQL副本</returns> public override object Clone() { var newObject = base.Clone() as SelectSqlStatement; if (SelectList != null) { newObject.SelectList = SelectList.Clone() as SelectFieldListStatement; } if (From != null) { newObject.From = From.Clone() as From; } if (JoinCondition != null) { newObject.JoinCondition = JoinCondition.Clone() as JoinConditionStatement; } if (OrderByCondition != null) { newObject.OrderByCondition = OrderByCondition.Clone() as ConditionStatement; } if (FilterCondition != null) { newObject.FilterCondition = FilterCondition.Clone() as FilterConditionStatement; } if (MainFromItem != null) { newObject.MainFromItem = MainFromItem.Clone() as FromItem; } newObject.AliasCount = AliasCount; newObject.DictFieldAliasMapping = new Dictionary <string, string>(); foreach (KeyValuePair <string, string> map in DictFieldAliasMapping) { newObject.DictFieldAliasMapping.Add(map.Key, map.Value); } return(newObject); }
/// <summary> /// Return a filter equivalent to current basic filtering settings /// </summary> /// <returns></returns> public IEnumerable <Filter> GenerateEquivalentFilter() { var results = new List <Filter>(); if (string.IsNullOrEmpty(_filteringFilterCondition.FilterText)) { results.Add(new Filter("Include all", false, new FilterCondition("!", ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsOrphaned)) { InvertResults = true })); } else { results.Add(new Filter(_filteringFilterCondition.FilterText, false, (FilterCondition)_filteringFilterCondition.Clone())); } if (_settings.Settings.FilterHideMicrosoft) { results.Add(new Filter("Published by Microsoft", true, new FilterCondition("Microsoft", ComparisonMethod.Contains, nameof(ApplicationUninstallerEntry.Publisher)))); } if (!_settings.Settings.FilterShowStoreApps) { results.Add(new Filter("Store Apps", true, new FilterCondition(nameof(UninstallerType.StoreApp), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.UninstallerKind)))); } if (!_settings.Settings.FilterShowWinFeatures) { results.Add(new Filter("Windows Features", true, new FilterCondition(nameof(UninstallerType.WindowsFeature), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.UninstallerKind)))); } if (!_settings.Settings.AdvancedDisplayOrphans) { results.Add(new Filter("Orphaned apps", true, new FilterCondition(true.ToString(), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsOrphaned)))); } if (!_settings.Settings.FilterShowProtected) { results.Add(new Filter("Protected apps", true, new FilterCondition(true.ToString(), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsProtected)))); } if (!_settings.Settings.FilterShowSystemComponents) { results.Add(new Filter("System Components", true, new FilterCondition(true.ToString(), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.SystemComponent)))); } if (!_settings.Settings.FilterShowUpdates) { results.Add(new Filter("Updates", true, new FilterCondition(true.ToString(), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsUpdate)))); } // TODO Better detection, can lead to bugs down the line if (!_settings.Settings.FilterShowTweaks) { results.Add(new Filter("Tweaks", true, new FilterCondition(@"\Resources\Scripts\Tweak", ComparisonMethod.Contains, nameof(ApplicationUninstallerEntry.UninstallString)))); } return(results); }