コード例 #1
0
        public IEnumerable <TSelect> FindMatches <TSelect>(string query, int maxCount, Func <string, string, TSelect, int> evalQuality) where TSelect : T
        {
            if (evalQuality == null)
            {
                evalQuality = DefaultQualityEvaluator;
            }

            using (var iter = PartialMatchEnumerator.GetInstance <TSelect>(RootNode, query, maxCount, evalQuality)) {
                while (iter.MoveNext())
                {
                    yield return((TSelect)iter.Current);
                }
            }
        }
コード例 #2
0
            public static PartialMatchEnumerator GetInstance <TSelect>(CharNode current, string query, int maxCount, Func <string, string, TSelect, int> evalQuality) where TSelect : T
            {
                PartialMatchEnumerator pme;

                _pool.TryTake(out pme);

                if (pme != null)
                {
                    pme.lsTerms.Clear();
                    pme.matchLookup.Clear();
                    pme.unique.Clear();
                    pme.stack.Clear();
                }
                else
                {
                    pme = new PartialMatchEnumerator();
                }

                pme.Init(current, query, maxCount, evalQuality);
                return(pme);
            }