private ExpressionToSql <T> SelectParser(Expression expression, Expression expressionBody, bool blnAsNoLock = false, params Type[] ary) { this.Clear(); this._sqlBuilder.IsSingleTable = false; if (expressionBody != null && expressionBody.Type == typeof(T)) { throw new ArgumentException("cannot be parse expression", "expression"); } foreach (var item in ary) { string tableName = item.Name; this._sqlBuilder.SetTableAlias(tableName); } string sql = "select {0}\nfrom " + this._mainTableName + " " + this._sqlBuilder.GetTableAlias(this._mainTableName); if (blnAsNoLock) { sql += AsNoLock(); } if (expression == null) { this._sqlBuilder.AppendFormat(sql, "*"); } else { Expression2SqlProvider.Select(expressionBody, this._sqlBuilder); this._sqlBuilder.AppendFormat(sql, this._sqlBuilder.SelectFieldsStr); } return(this); }
protected override SqlBuilder Select(NewExpression expression, SqlBuilder sqlBuilder) { foreach (Expression item in expression.Arguments) { Expression2SqlProvider.Select(item, sqlBuilder); } foreach (MemberInfo item in expression.Members) { sqlBuilder.SelectFieldsAlias.Add(item.Name); } return(sqlBuilder); }
protected override SqlBuilder Select(UnaryExpression expression, SqlBuilder sqlBuilder) { Expression2SqlProvider.Select(expression.Operand, sqlBuilder); return(sqlBuilder); }
protected override SqlBuilder Select(ParameterExpression expression, SqlBuilder sqlBuilder) { Expression2SqlProvider.Select(expression, sqlBuilder); return(sqlBuilder); }