public SqlExp <T> SelectSubQuerySingle <T2>(SqlExpBase sqlExp, Expression <Func <T2, object> > subProp, Expression <Func <T, object> > mainProp)
        {
            if (_type != SqlType.Query)
            {
                _type = SqlType.Query;
            }

            var fieldAlias = _resolver.GetColumnName(mainProp);

            _resolver.SelectSubQuery <T2>(subProp, sqlExp.JoinSubAliasTableName, fieldAlias);

            return(this);
        }
        public SqlExp <T> SelectSubQuery <T2>(SqlExpBase sqlExp, params Expression <Func <T2, object> >[] expressions)
        {
            if (_type != SqlType.Query)
            {
                _type = SqlType.Query;
            }
            foreach (var expression in expressions)
            {
                _resolver.SelectSubQuery <T2>(expression, sqlExp.JoinSubAliasTableName);
            }

            return(this);
        }
 public SqlExp <T> AverageSubQuery <TSub, TResult>(SqlExpBase subExp, Expression <Func <T, object> > expression, Expression <Func <TResult, object> > aliasExpression)
 {
     _resolver.SelectWithFunctionSubQuery(expression, SelectFunction.AVG, aliasExpression, subExp.JoinSubAliasTableName);
     return(this);
 }
 public SqlExp <T> MinSubQuery <TSub>(SqlExpBase subExp, Expression <Func <T, object> > expression)
 {
     _resolver.SelectWithFunctionSubQuery(expression, SelectFunction.MIN, subExp.JoinSubAliasTableName);
     return(this);
 }
 public SqlExp <T> SumSubQuery <TSub>(SqlExpBase subExp, Expression <Func <T, object> > expression, Expression <Func <TSub, object> > aliasProp)
 {
     _resolver.SelectWithFunctionSubQuery(expression, SelectFunction.SUM, aliasProp, subExp.JoinSubAliasTableName);
     return(this);
 }
 public SqlExp <T> WhereNotIn(Expression <Func <T, object> > expression, SqlExpBase sqlQuery)
 {
     _builder.And();
     _resolver.QueryByIsIn(true, expression, sqlQuery);
     return(this);
 }