Beispiel #1
0
 private void Write(string name, DbSortClause sortClause)
 {
     Write(name, "");
     _depth++;
     WriteLine(string.Format("Collation: {0}", "", sortClause.Collation));
     WriteLine(string.Format("Ascending: {0}", "", sortClause.Ascending));
     sortClause.Expression.Accept(this);
     _depth--;
 }
Beispiel #2
0
 private LegacyCommandTrees.DbSortClause ConvertToLegacySortClause(DbSortClause sortClause)
 {
     return
         (sortClause.Ascending
             ? string.IsNullOrEmpty(sortClause.Collation)
                   ? sortClause.Expression.Accept(this).ToSortClause()
                   : sortClause.Expression.Accept(this).ToSortClause(sortClause.Collation)
             : string.IsNullOrEmpty(sortClause.Collation)
                   ? sortClause.Expression.Accept(this).ToSortClauseDescending()
                   : sortClause.Expression.Accept(this).ToSortClauseDescending(sortClause.Collation));
 }
Beispiel #3
0
        private Expression CreateOrderByExpression(IList <DbSortClause> sortorder, string sourceVariableName, Expression source)
        {
            Type sourceType = TypeHelper.GetElementType(source.Type);

            Expression       result   = source;
            LambdaExpression selector = null;

            for (int i = 0; i < sortorder.Count; i++)
            {
                DbSortClause sort = sortorder[i];

                ParameterExpression param = Expression.Parameter(sourceType, sourceVariableName);
                using (this.CreateVariable(param, sourceVariableName))
                {
                    selector = Expression.Lambda(this.Visit(sort.Expression), param);
                }

                if (sort.Ascending)
                {
                    if (i == 0)
                    {
                        result = queryMethodExpressionBuilder.OrderBy(result, selector);
                    }
                    else
                    {
                        result = queryMethodExpressionBuilder.ThenBy(result, selector);
                    }
                }
                else
                {
                    if (i == 0)
                    {
                        result = queryMethodExpressionBuilder.OrderByDescending(result, selector);
                    }
                    else
                    {
                        result = queryMethodExpressionBuilder.ThenByDescending(result, selector);
                    }
                }
            }

            return(result);
        }
Beispiel #4
0
 private bool VisitSortClause(DbSortClause sortClause)
 {
     return(VisitExpression(sortClause.Expression));
 }