Exemple #1
0
 /// <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;
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
 /// <summary> Get query language token id by CriteriaComparator </summary>
 /// <param name="type"></param>
 /// <returns></returns>
 public static int GetToken(CriteriaComparator type)
 {
     return(CriteriaComparatorToToken[type]);
 }