Exemplo n.º 1
0
        // <param, operand>
        public static Dictionary <string, string> GetParamsFromSqlExpr(SqlExpressionEngine.Expr expr, Dictionary <string, string> dict = null)
        {
            if (dict == null)
            {
                dict = new Dictionary <string, string>();
            }

            if (expr == null)
            {
                return(dict);
            }

            if (expr.Type == SqlExpressionEngine.ExprType.Expr && expr.Left != null && expr.Right != null)
            {
                if (expr.Left.Type == SqlExpressionEngine.ExprType.Param)
                {
                    dict[expr.Left.Value] = expr.Right.Value;
                }

                if (expr.Right.Type == SqlExpressionEngine.ExprType.Param)
                {
                    dict[expr.Right.Value] = expr.Left.Value;
                }
            }

            GetParamsFromSqlExpr(expr.Left, dict);
            GetParamsFromSqlExpr(expr.Right, dict);

            return(dict);
        }
Exemplo n.º 2
0
        public static QueryExpression ReadFromSqlExpr(SqlExpressionEngine.Expr expr)
        {
            if (expr == null || expr.Type == SqlExpressionEngine.ExprType.None)
            {
                return(null);
            }

            var storeExpr = new QueryExpression();

            switch (expr.Type)
            {
            case SqlExpressionEngine.ExprType.Field:
                var fieldSplit = expr.Value.Split('.');
                storeExpr.QueryField = new StoreQueryField {
                    Field = new StoreFieldReference {
                        ObjectAlias = fieldSplit[0], FieldName = fieldSplit[1]
                    }
                };
                break;

            case SqlExpressionEngine.ExprType.Param:
                storeExpr.Param = expr.Value;
                break;

            case SqlExpressionEngine.ExprType.Number:
            case SqlExpressionEngine.ExprType.StringLiteral:
                storeExpr.Value = expr.Value;
                break;

            case SqlExpressionEngine.ExprType.Expr:
                break;
            }

            storeExpr.Operator = expr.Operator;
            storeExpr.Left     = ReadFromSqlExpr(expr.Left);
            storeExpr.Right    = ReadFromSqlExpr(expr.Right);

            return(storeExpr);
        }