Example #1
0
        protected static string BuildSort <T>(IQuery <T> query)
        {
            var analyzer = TableCache.GetDialect(typeof(T));
            var sb       = new StringBuilder();

            if (query.OrderBys != null)
            {
                var len = query.OrderBys.Count;
                if (len > 0)
                {
                    sb.Append(" ORDER BY");
                }

                var cols = TableCache.GetColumnDescriptors(typeof(T));
                for (var index = 0; index < len; index++)
                {
                    var sort = query.OrderBys[index];
                    if (cols.All(n => n.DbName != sort.OrderField))
                    {
                        throw new ArgumentException("query.OrderBys OrderField Not Exist");
                    }

                    var options        = SqlDatabaseOptionsFactory.GetSqlDatabaseOptions(analyzer);
                    var startDelimiter = options.StartDelimiter;
                    var endDelimiter   = options.EndDelimiter;

                    sb.Append($" {startDelimiter}{sort.OrderField}{endDelimiter} {sort.OrderDirection}");
                    if (index != len - 1)
                    {
                        sb.Append(",");
                    }
                }

                return(sb.ToString());
            }

            return(string.Empty);
        }