private void ParseExpression() { var expression = Expression; Console.WriteLine(ExpressionTranslateTemp.Parse(expression, 0)); Clauses.AddRange(ExpressionTranslate.ParseClause(expression)); }
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(")")); }
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())); } }
/// <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)); }
/// <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); }
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}'."); }
public Selector(IEnumerable <SelectorClause> selectors) { Clauses.AddRange(selectors); }
public JoinSqlClause(string joinType, Type tableType, SqlExpression expression) { Clauses.AddRange(new RawSqlClause($"{joinType} JOIN {tableType.GetTableName()} ON"), expression); }
public WhereSqlClause(SqlExpression expression) { Clauses.AddRange(new RawSqlClause("WHERE"), expression); }