Exemplo n.º 1
0
        protected override void VisitAndAlso(Content.Query.Expressions.AndAlsoExpression expression)
        {
            var andAlso = (AndAlsoExpression)expression;

            QueryComplete leftClause = null;

            if (!(andAlso.Left is TrueExpression))
            {
                leftClause = VisitInner(andAlso.Left);
            }

            QueryComplete rightClause = null;

            if (!(andAlso.Right is TrueExpression))
            {
                rightClause = VisitInner(andAlso.Right);
            }

            if (leftClause != null && rightClause != null)
            {
                var queryComplete = QueryBuilder.Query.And(leftClause, rightClause);
                SetQuery(queryComplete);
            }
            else if (leftClause != null)
            {
                SetQuery(leftClause);
            }
            else if (rightClause != null)
            {
                SetQuery(rightClause);
            }
        }
Exemplo n.º 2
0
        protected override void VisitAndAlso(Content.Query.Expressions.AndAlsoExpression expression)
        {
            string leftClause   = "";
            string leftViewName = "";

            if (!(expression.Left is TrueExpression))
            {
                var leftVisitor = VisitInner(expression.Left);
                leftClause   = leftVisitor.WhereClause;
                leftViewName = leftVisitor.ViewName;
                if (leftVisitor.OrderClause != null)
                {
                    this.OrderClause = leftVisitor.OrderClause;
                }

                this.eqUserKeys.AddRange(leftVisitor.EQUserKeys);
            }

            string rightClause   = "";
            string rightViewName = "";

            if (!(expression.Right is TrueExpression))
            {
                var rightVisitor = VisitInner(expression.Right);
                rightClause   = rightVisitor.WhereClause;
                rightViewName = rightVisitor.ViewName;
                if (rightVisitor.OrderClause != null)
                {
                    this.OrderClause = rightVisitor.OrderClause;
                }
                this.eqUserKeys.AddRange(rightVisitor.EQUserKeys);
            }


            if (!string.IsNullOrEmpty(leftClause) && !string.IsNullOrEmpty(rightClause))
            {
                whereClause.AppendFormat(string.Format(" ({0} && {1})", leftClause, rightClause));
                viewNameBuilder.AppendFormat("_({0}_AND_{1})", leftViewName, rightViewName);
            }
            else if (!string.IsNullOrEmpty(leftClause))
            {
                whereClause.AppendFormat(string.Format("{0}", leftClause));
                viewNameBuilder.AppendFormat("_{0}", leftViewName);
            }
            else if (!string.IsNullOrEmpty(rightClause))
            {
                whereClause.AppendFormat(string.Format("{0}", rightClause));
                viewNameBuilder.AppendFormat("_{0}", rightViewName);
            }
        }