/// <summary>
        /// 查询指定字段名并返回当前语句
        /// </summary>
        /// <typeparam name="T">实体类类型</typeparam>
        /// <param name="cmd">查询语句</param>
        /// <param name="expr">实体类属性</param>
        /// <exception cref="ExpressionInvalidException">表达式不正确</exception>
        /// <exception cref="NullAttributeException">没有设置特性</exception>
        /// <returns>当前语句</returns>
        /// <example>
        /// <code lang="C#">
        /// <![CDATA[
        /// public class UserRepository : DatabaseTable<User>
        /// {
        ///     //other necessary code
        ///
        ///     public User GetEntity(Int32 userID)
        ///     {
        ///         return this.Select()
        ///             .Querys<User>(c => new { c.UserID, c.UserName })
        ///             .Where<User>(c => c.UserID == userID)
        ///             .ToEntity<User>(this) > 0;
        ///
        ///         //SELECT UserID, UserName From tbl_Users WHERE UserID = @UserID
        ///         //@UserID = userID
        ///     }
        /// }
        /// ]]>
        /// </code>
        /// </example>
        public static SelectCommand Querys <T>(this SelectCommand cmd, Expression <Func <T, Object> > expr)
        {
            NewExpression left = expr.Body as NewExpression;

            if (left == null)
            {
                throw new ExpressionInvalidException();
            }

            foreach (MemberExpression member in left.Arguments)
            {
                DatabaseColumnAttribute attr = ExpressionHelper.GetColumnAttribute(cmd, member);

                if (attr == null)
                {
                    continue;
                }

                cmd.Query(attr.ColumnName);
            }

            return(cmd);
        }
        /// <summary>
        /// 查询指定字段名并返回当前语句
        /// </summary>
        /// <typeparam name="T">实体类类型</typeparam>
        /// <param name="cmd">查询语句</param>
        /// <param name="expr">实体类属性</param>
        /// <param name="function">合计函数类型</param>
        /// <param name="aliasesName">字段名的别名</param>
        /// <exception cref="ExpressionInvalidException">表达式不正确</exception>
        /// <exception cref="NullAttributeException">没有设置特性</exception>
        /// <returns>当前语句</returns>
        /// <example>
        /// <code lang="C#">
        /// <![CDATA[
        /// public class UserRepository : DatabaseTable<User>
        /// {
        ///     //other necessary code
        ///
        ///     public Int32 Count()
        ///     {
        ///         return this.Select()
        ///             .Query<User>(c => c.UserID, SqlAggregateFunction.Count, "UserCount")
        ///             .Result<Int32>();
        ///
        ///         //SELECT COUNT(UserID) AS UserCount From tbl_Users
        ///     }
        /// }
        /// ]]>
        /// </code>
        /// </example>
        public static SelectCommand Query <T>(this SelectCommand cmd, Expression <Func <T, Object> > expr, SqlAggregateFunction function, String aliasesName)
        {
            DatabaseColumnAttribute attr = SelectCommandExtension.GetColumnAttribute(cmd, expr.Body);

            return(cmd.Query(function, attr.ColumnName, aliasesName));
        }