internal static StringBuilder GetQueryableSql <T>(Queryable <T> queryable)
        {
            string        joinInfo  = string.Join(" ", queryable.JoinTableValue);
            StringBuilder sbSql     = new StringBuilder();
            string        tableName = queryable.TableName.IsNullOrEmpty() ? queryable.TName : queryable.TableName;

            if (queryable.DB.Language.IsValuable() && queryable.DB.Language.Suffix.IsValuable())
            {
                var viewNameList = LanguageHelper.GetLanguageViewNameList(queryable.DB);
                var isLanView    = viewNameList.IsValuable() && viewNameList.Any(it => it == tableName);
                if (!queryable.DB.Language.Suffix.StartsWith(LanguageHelper.PreSuffix))
                {
                    queryable.DB.Language.Suffix = LanguageHelper.PreSuffix + queryable.DB.Language.Suffix;
                }

                //将视图变更为多语言的视图
                if (isLanView)
                {
                    tableName = typeof(T).Name + queryable.DB.Language.Suffix;
                }
            }
            if (queryable.DB.PageModel == PageModel.RowNumber)
            {
                string withNoLock = queryable.DB.IsNoLock ? "WITH(NOLOCK)" : null;
                var    order      = queryable.OrderByValue.IsValuable() ? ("ORDER BY " + queryable.OrderByValue + " ") : null;
                sbSql.AppendFormat("SELECT " + queryable.SelectValue.GetSelectFiles() + " {1} FROM {0} {5} {2} WHERE 1=1 {3} {4} ", tableName.GetTranslationSqlName(), "", withNoLock, string.Join("", queryable.WhereValue), queryable.GroupByValue.GetGroupBy(), joinInfo);
                sbSql.Append(order);
                if (queryable.Skip > 0 || queryable.Take > 0)
                {
                    if (queryable.Skip > 0 && queryable.Take > 0)
                    {
                        sbSql.AppendFormat("limit {0},{1}", queryable.Skip, queryable.Take);
                    }
                    else if (queryable.Skip > 0)
                    {
                        sbSql.AppendFormat("limit {0}", queryable.Skip);
                    }
                    else if (queryable.Take > 0)
                    {
                        sbSql.AppendFormat("limit 0,{0}", queryable.Take);
                    }
                }
            }
            return(sbSql);
        }
        /// <summary>
        /// 单表情况
        /// </summary>
        /// <typeparam name="TResult">实体类型</typeparam>
        /// <param name="reval">查旬对象</param>
        /// <param name="exp"></param>
        internal static void GetResult <TResult>(Queryable <TResult> reval, Expression exp)
        {
            string expStr            = reval.SelectValue;
            var    isComplexAnalysis = IsComplexAnalysis(expStr);

            expStr = Regex.Match(expStr, @"(?<=\{).*?(?=\})").Value;
            if (expStr.IsNullOrEmpty())
            {
                expStr = Regex.Match(reval.SelectValue, @"c =>.*?\((.+)\)").Groups[1].Value;
            }
            var hasOutPar = expStr.Contains(SqlSugarTool.ParSymbol);

            if (hasOutPar)//有
            {
                var ms = Regex.Matches(expStr, @"""(\" + SqlSugarTool.ParSymbol + @"[a-z,A-Z]+)?""\.ObjTo[a-z,A-Z]+?\(\)").Cast <Match>().ToList();
                foreach (var m in ms)
                {
                    expStr = expStr.Replace(m.Groups[0].Value, m.Groups[1].Value);
                }
            }
            expStr = Regex.Replace(expStr, @"(?<=\=)[^\,]*?\.", "");
            if (reval.SelectValue.IsNullOrEmpty())
            {
                throw new SqlSugarException("Select 解析失败 ", new { selectString = reval.SelectValue });
            }
            expStr            = expStr.Replace("\"", "'");
            expStr            = expStr.Replace("DateTime.Now", "now()");
            expStr            = ConvertFuns(expStr);
            reval.SelectValue = expStr;
            if (reval.DB != null && reval.DB.IsEnableAttributeMapping && reval.DB._mappingColumns.IsValuable())
            {
                foreach (var item in reval.DB._mappingColumns)
                {
                    reval.SelectValue = Regex.Replace(reval.SelectValue, @"\=" + item.Key, "=" + item.Value);
                }
            }
            reval.SelectValue = ConvertSelectValue(reval.SelectValue);
        }