コード例 #1
0
ファイル: QuickFilterFacade.cs プロジェクト: NikolayXHD/Mtgdb
        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();
        }
コード例 #2
0
 public Dictionary <string, string> GetRequiredClient()
 => Required.Concat(RequiredClients).ToDictionary(x => x.Key, x => x.Value);
コード例 #3
0
 public Dictionary <string, string> GetRequiredServer()
 => Required.Concat(RequiredServers).ToDictionary(x => x.Key, x => x.Value);
コード例 #4
0
 public IEnumerable <string> AllParamNames()
 {
     return(Required.Concat(Optional.SelectMany(o => o.ParameterNames)).Distinct());
 }