public void ApplyValueStates(IList <IList <FilterValueState> > states) { if (states.Count != _values.Count) { throw new ArgumentException(@"states count"); } for (int c = 0; c < states.Count; c++) { var stateArr = states[c]; var filterValues = _values[c]; var patterns = _patterns[c]; Required[c].Values = Enumerable.Range(0, stateArr.Count) .Where(i => stateArr[i] == FilterValueState.Required) .Select(i => filterValues[i]) .ToArray(); Required[c].Patterns = Enumerable.Range(0, stateArr.Count) .Where(i => stateArr[i] == FilterValueState.Required) .Select(i => patterns[i]) .ToArray(); RequiredSome[c].Values = Enumerable.Range(0, stateArr.Count) .Where(i => stateArr[i] == FilterValueState.RequiredSome) .Select(i => filterValues[i]) .ToArray(); RequiredSome[c].Patterns = Enumerable.Range(0, stateArr.Count) .Where(i => stateArr[i] == FilterValueState.RequiredSome) .Select(i => patterns[i]) .ToArray(); if (stateArr.All(_ => _ != FilterValueState.Prohibited)) { Ignored[c].Patterns = _emptyPatterns; } else { Ignored[c].Patterns = Enumerable.Range(0, stateArr.Count) .Where(i => stateArr[i] == FilterValueState.Ignored) .Select(i => patterns[i]) .ToArray(); } Prohibited[c].Values = Enumerable.Range(0, stateArr.Count) .Where(i => stateArr[i] == FilterValueState.Prohibited) .Select(i => filterValues[i]) .ToArray(); } if (!_searcher.IsLoaded) { _matchingCardIds = null; return; } if (Required.Concat(RequiredSome).Concat(Prohibited).Sum(_ => _.Values.Count) == 0) { _matchingCardIds = null; return; } _matchingCardIds = _searcher .GetCardIds(Required, RequiredSome, Prohibited) .ToHashSet(); }
public Dictionary <string, string> GetRequiredClient() => Required.Concat(RequiredClients).ToDictionary(x => x.Key, x => x.Value);
public Dictionary <string, string> GetRequiredServer() => Required.Concat(RequiredServers).ToDictionary(x => x.Key, x => x.Value);
public IEnumerable <string> AllParamNames() { return(Required.Concat(Optional.SelectMany(o => o.ParameterNames)).Distinct()); }