Пример #1
0
        public static void Add <TSearchHeadEnum, TValue>(this List <SearchPredicate <TSearchHeadEnum> > target, TSearchHeadEnum head, TValue value, bool withWildcardSuffix = false) where TSearchHeadEnum : struct, IConvertible
        {
            var p = SearchPredicate <TSearchHeadEnum> .Create(head, value);

            p.Term.WithWildcardSuffix = withWildcardSuffix;
            target.Add(p);
        }
Пример #2
0
        public static SearchPredicate <TSearchHeadEnum> Create <TValue>(TSearchHeadEnum head, TValue value, Type type = null)
        {
            var p = new SearchPredicate <TSearchHeadEnum>();

            p.Term = SearchTerm <TSearchHeadEnum> .Create(head, value.ToString(), type);

            return(p);
        }
Пример #3
0
        public static SearchPredicate <TSearchHeadEnum> CreateAnti <TValue>(TSearchHeadEnum head, TValue value)
        {
            var p = new SearchPredicate <TSearchHeadEnum>();

            p.Term = SearchTerm <TSearchHeadEnum> .CreateAnti(head, value);

            return(p);
        }
Пример #4
0
        public static List <SearchPredicate <TSearchHeadEnum> > FindHead <TSearchHeadEnum>(
            SearchPredicate <TSearchHeadEnum> target
            , TSearchHeadEnum head)
            where TSearchHeadEnum : struct, IConvertible
        {
            var output = new List <SearchPredicate <TSearchHeadEnum> >();

            if (target.HasTerm && target.Term.Head.Equals(head))
            {
                output.Add(target);
            }

            if (target.HasAndPredicate)
            {
                output.AddRange(FindHead(target.AndPredicate, head));
            }

            if (target.HasOrPredicate)
            {
                output.AddRange(FindHead(target.OrPredicate, head));
            }

            return(output);
        }