Beispiel #1
0
        private void ParseExpression()
        {
            var expression = Expression;

            Console.WriteLine(ExpressionTranslateTemp.Parse(expression, 0));
            Clauses.AddRange(ExpressionTranslate.ParseClause(expression));
        }
Beispiel #2
0
 public OrderBySqlClause(Expression[] columns, bool descending)
 {
     Clauses.AddRange(
         new RawSqlClause("ORDER BY"),
         SqlClause.Join(columns.Select(c => new SqlExpression(c)), new RawSqlClause(",")),
         new RawSqlClause(descending ? "DESC" : "ASC")
         );
 }
 public LimitMsSqlClause(int limit, int offset)
 {
     Clauses.AddRange(
         new RawSqlClause("OFFSET"),
         new RawSqlClause(offset.ToString()),
         new RawSqlClause("ROWS"),
         new RawSqlClause("FETCH NEXT"),
         new RawSqlClause(limit.ToString()),
         new RawSqlClause("ROWS ONLY"));
 }
        public void AddValues(object values)
        {
            var properties = values.GetType().GetProperties();

            Clauses.AddRange(new RawSqlClause("("), new ListSqlClause(properties.Select(p => new RawSqlClause(p.Name))), new RawSqlClause(")"));

            Clauses.Add(new RawSqlClause("VALUES"));

            Clauses.AddRange(new RawSqlClause("("), new ListSqlClause(properties.Select(p => new ParameterSqlClause(p.GetValue(values)))), new RawSqlClause(")"));
        }
Beispiel #5
0
        public LimitMySqlClause(int limit, int offset)
        {
            Clauses.AddRange(
                new RawSqlClause("LIMIT"),
                new RawSqlClause(limit.ToString()));

            if (offset > 0)
            {
                Clauses.AddRange(
                    new RawSqlClause("OFFSET"),
                    new RawSqlClause(offset.ToString()));
            }
        }
Beispiel #6
0
        /// <summary>
        /// Create a new selector from any string.
        /// </summary>
        ///
        /// <param name="selector">
        /// The CSS selector string, or a string of HTML.
        /// </param>

        public Selector(string selector)
        {
            var parser = new SelectorParser();

            Clauses.AddRange(parser.Parse(selector));
        }
Beispiel #7
0
        /// <summary>
        /// Create a new selector from a sequence of selector clauses.
        /// </summary>
        ///
        /// <param name="clauses">
        /// A sequence of clauses to build this selector
        /// </param>

        public Selector(IEnumerable <SelectorClause> clauses)
        {
            Clauses.AddRange(clauses);
        }
Beispiel #8
0
        private void Parse()
        {
            if (Expression is LambdaExpression lambda)
            {
                Clauses.Add(new SqlExpression(lambda.Body));

                return;
            }

            if (Expression is UnaryExpression unary)
            {
                Clauses.AddRange(GetNodeClause(unary.NodeType), new SqlExpression(unary.Operand));

                return;
            }

            if (Expression is BinaryExpression binary)
            {
                Clauses.AddRange(new SqlExpression(binary.Left), GetNodeClause(binary.NodeType), new SqlExpression(binary.Right));

                if (binary.NodeType == ExpressionType.AndAlso || binary.NodeType == ExpressionType.OrElse)
                {
                    Clauses.Insert(0, new RawSqlClause("("));
                    Clauses.Add(new RawSqlClause(")"));
                }

                return;
            }

            if (Expression is ConstantExpression constant)
            {
                object value = constant.Value;

                if (value is int)
                {
                    Clauses.Add(new RawSqlClause(value.ToString()));

                    return;
                }

                if (value is string)
                {
                    value = (string)value;
                }

                Clauses.Add(new ParameterSqlClause(value));

                return;
            }

            if (Expression is MemberExpression member)
            {
                if (member.Member is PropertyInfo property)
                {
                    Clauses.Add(new RawSqlClause($"{member.Expression.Type.GetTableName()}.{property.GetColumnName()}"));

                    return;
                }

                if (member.Member is FieldInfo)
                {
                    Clauses.Add(new ParameterSqlClause(GetMemberExpressionValue(member)));

                    return;
                }

                throw new ArgumentOutOfRangeException(nameof(Expression), "Expression does not refer to a property or field.");
            }

            if (Expression is MethodCallExpression methodCall)
            {
                Clauses.Add(new ParameterSqlClause(GetMethodExpressionValue(methodCall)));

                return;
            }

            throw new ArgumentOutOfRangeException(nameof(Expression), $"Unsupported expression type '{Expression.GetType().Name}'.");
        }
Beispiel #9
0
 public Selector(IEnumerable <SelectorClause> selectors)
 {
     Clauses.AddRange(selectors);
 }
Beispiel #10
0
 public JoinSqlClause(string joinType, Type tableType, SqlExpression expression)
 {
     Clauses.AddRange(new RawSqlClause($"{joinType} JOIN {tableType.GetTableName()} ON"), expression);
 }
Beispiel #11
0
 public WhereSqlClause(SqlExpression expression)
 {
     Clauses.AddRange(new RawSqlClause("WHERE"), expression);
 }