public override SqlFragment Visit(DbSortExpression expression) { SelectStatement select = VisitInputExpressionEnsureSelect(expression.Input.Expression, expression.Input.VariableName, expression.Input.VariableType); select = WrapIfNotCompatible(select, expression.ExpressionKind); foreach (DbSortClause sortClause in expression.SortOrder) { select.AddOrderBy(new SortFragment( sortClause.Expression.Accept(this), sortClause.Ascending)); } return(select); }
public override SqlFragment Visit(DbSkipExpression expression) { SelectStatement select = VisitInputExpressionEnsureSelect(expression.Input.Expression, expression.Input.VariableName, expression.Input.VariableType); select = WrapIfNotCompatible(select, DbExpressionKind.Sort); foreach (DbSortClause sortClause in expression.SortOrder) { select.AddOrderBy( new SortFragment(sortClause.Expression.Accept(this), sortClause.Ascending)); } // if we wrapped above, then this wrap will not create a new one so there // is no harm in calling it select = WrapIfNotCompatible(select, expression.ExpressionKind); select.Skip = expression.Count.Accept(this); return(select); }