/// <summary> /// Creates a new criteria with the specified constraint /// </summary> /// <param name="column">the column to the compare the value to</param> /// <param name="value">the value to compare against the column</param> /// <param name="comparator">the type of comparison to do (Equals, Greater than etc)</param> /// <param name="join">how to join the criteria to the previous criteria</param> public Criteria(string column, Object value, CriteriaComparator comparator = CriteriaComparator.Equal, CriteriaJoin join = CriteriaJoin.And) { this.column = column; this.value = value; this.join = join; this.comparator = comparator; }
public static Expression <Func <T, bool> > GetPredicate <T>(CriteriaComparator comparator, bool not, Func <T, dynamic> accessor, dynamic value) { var comparatorFunc = comparatorTable[comparator]; var expr = new Func <T, bool>(x => { var res = comparatorFunc(accessor(x), value); return(res); }); // Inverse WHERE predicate if needed (eg. IN / NOT IN) if (not) { expr = PredicateExtensions.Not(expr); } Expression <Func <T, bool> > result = x => expr(x); return(result); }
public static QueryNode AddCriteria(this QueryNode node, SingleQuery subjectQuery, CriteriaComparator comparator, object value, params Action <QueryNode>[] actions) { var newNode = new QueryNode { Type = QueryNodeType.Criteria, CriteriaValueConstant = value, Comparator = comparator, CriteriaSubjectQuery = subjectQuery, }; actions?.ForEach(x => x.Invoke(newNode)); node.Criterias.Add(newNode); return(node); }
public static LinkedListNode <QueryNode> AddCriteria(this LinkedListNode <QueryNode> node, CriteriaAppendType appender, SingleQuery subjectQuery, CriteriaComparator comparator, object value, params Action <QueryNode>[] actions) { node.Value.AddCriteria(subjectQuery, comparator, value, actions); return(node); }
/// <summary> Adds Criteria to specified node in SingleQuery </summary> /// <param name="node"></param> /// <param name="appender"></param> /// <param name="name"></param> /// <param name="comparator"></param> /// <param name="value"></param> /// <param name="actions"></param> /// <returns></returns> public static LinkedListNode <QueryNode> AddCriteria(this LinkedListNode <QueryNode> node, CriteriaAppendType appender, string name, CriteriaComparator comparator, object value, params Action <QueryNode>[] actions) { var criteriaSubjectQuery = SingleQuery.CreateQuery.AddProperty(name); node.AddCriteria(appender, criteriaSubjectQuery, comparator, value, actions); return(node); }
public static SingleQuery AddCriteria(this SingleQuery singleQuery, CriteriaAppendType appender, SingleQuery subjectQuery, CriteriaComparator comparator, object value, params Action <QueryNode>[] actions) { singleQuery.NodesList.Last.AddCriteria(appender, subjectQuery, comparator, value, actions); return(singleQuery); }
/// <summary> Get query language token id by CriteriaComparator </summary> /// <param name="type"></param> /// <returns></returns> public static int GetToken(CriteriaComparator type) { return(CriteriaComparatorToToken[type]); }