public Expression2SqlCore <T> Sum(Expression <Func <T, object> > expression)
 {
     _sqlPack.Clear();
     _sqlPack.IsSingleTable = true;
     Expression2SqlProvider.Sum(expression.Body, _sqlPack);
     return(this);
 }
 public Expression2SqlCore <T> Update(Expression <Func <object> > expression = null)
 {
     _sqlPack.Clear();
     _sqlPack.IsSingleTable = true;
     _sqlPack += "update " + typeof(T).Name + " set ";
     Expression2SqlProvider.Update(expression.Body, _sqlPack);
     return(this);
 }
        private Expression2SqlCore <T> JoinParser2 <T2, T3>(Expression <Func <T2, T3, bool> > expression,
                                                            string leftOrRightJoin = "")
        {
            var joinTableName = typeof(T3).Name;

            _sqlPack.SetTableAlias(joinTableName);
            _sqlPack.Sql.AppendFormat("\n{0}join {1} on", leftOrRightJoin,
                                      joinTableName + " " + _sqlPack.GetTableAlias(joinTableName));
            Expression2SqlProvider.Join(expression.Body, _sqlPack);
            return(this);
        }
        public Expression2SqlCore <T> Count(Expression <Func <T, object> > expression = null)
        {
            _sqlPack.Clear();
            _sqlPack.IsSingleTable = true;
            if (expression == null)
            {
                _sqlPack.Sql.AppendFormat("select count(*) from {0}", typeof(T).Name);
            }
            else
            {
                Expression2SqlProvider.Count(expression.Body, _sqlPack);
            }

            return(this);
        }
        public Expression2SqlCore <T> Select <T2, T3>(Expression <Func <T, T2, T3, object> > expression = null)
        {
            var sql = SelectParser(typeof(T), typeof(T2), typeof(T3));

            if (expression == null)
            {
                _sqlPack.Sql.AppendFormat(sql, "*");
            }
            else
            {
                Expression2SqlProvider.Select(expression.Body, _sqlPack);
                _sqlPack.Sql.AppendFormat(sql, _sqlPack.SelectFieldsStr);
            }

            return(this);
        }
        public Expression2SqlCore <T> Select <T2, T3, T4, T5, T6, T7, T8, T9, T10>(
            Expression <Func <T, T2, T3, T4, T5, T6, T7, T8, T9, T10, object> > expression = null)
        {
            var sql = SelectParser(typeof(T), typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7),
                                   typeof(T8), typeof(T9), typeof(T10));

            if (expression == null)
            {
                _sqlPack.Sql.AppendFormat(sql, "*");
            }
            else
            {
                Expression2SqlProvider.Select(expression.Body, _sqlPack);
                _sqlPack.Sql.AppendFormat(sql, _sqlPack.SelectFieldsStr);
            }

            return(this);
        }
 public Expression2SqlCore <T> OrderBy(Expression <Func <T, object> > expression)
 {
     _sqlPack += "\norder by ";
     Expression2SqlProvider.OrderBy(expression.Body, _sqlPack);
     return(this);
 }
 public Expression2SqlCore <T> GroupBy(Expression <Func <T, object> > expression)
 {
     _sqlPack += "\ngroup by ";
     Expression2SqlProvider.GroupBy(expression.Body, _sqlPack);
     return(this);
 }
 public Expression2SqlCore <T> Where(Expression <Func <T, bool> > expression)
 {
     _sqlPack += "\nwhere";
     Expression2SqlProvider.Where(expression.Body, _sqlPack);
     return(this);
 }