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); }
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); }
public static SearchPredicate <TSearchHeadEnum> CreateAnti <TValue>(TSearchHeadEnum head, TValue value) { var p = new SearchPredicate <TSearchHeadEnum>(); p.Term = SearchTerm <TSearchHeadEnum> .CreateAnti(head, value); return(p); }
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); }