/// <summary> /// Visits a LinqDistinctExpression. This expression is not supported in Linq to Astoria. /// </summary> /// <param name="expression">The expression.</param> /// <returns>The result of visiting this expression.</returns> public override QueryValue Visit(LinqDistinctExpression expression) { var source = this.EvaluateCollection(expression.Source); var sourceError = QueryError.GetErrorFromValues(source.Elements); var error = QueryError.Combine(sourceError, new QueryError("This expression is not supported in Linq to Astoria.")); return(expression.Source.ExpressionType.CreateErrorValue(error)); }
/// <summary> /// Replaces the given expression. /// </summary> /// <param name="expression">Expression to replace.</param> /// <returns>Replaced expression.</returns> public virtual QueryExpression Visit(LinqDistinctExpression expression) { QueryExpression source = this.ReplaceExpression(expression.Source); if (this.HasChanged(expression.Source, source)) { return(new LinqDistinctExpression(source, expression.ExpressionType)); } return(expression); }
/// <summary> /// Visits a QueryExpression tree whose root node is the LinqDistinctExpression. /// </summary> /// <param name="expression">The root node of the expression tree being visited.</param> /// <returns>Uri query string representing the expression.</returns> public virtual string Visit(LinqDistinctExpression expression) { throw new TaupoNotSupportedException("Not supported"); }
/// <summary> /// Generates System.CodeDom.CodeExpression from the given expression. /// </summary> /// <param name="expression">Expression from which System.CodeDom.CodeExpression is generated.</param> /// <returns>Generated System.CodeDom.CodeExpression.</returns> public virtual CodeExpression Visit(LinqDistinctExpression expression) { CodeExpression source = this.GenerateCode(expression.Source); return(source.Call("Distinct")); }
/// <summary> /// Evaluates the specified expression. /// </summary> /// <param name="expression">The expression to evaluate.</param> /// <returns>Value of the expression.</returns> public virtual QueryValue Visit(LinqDistinctExpression expression) { var source = this.EvaluateCollection(expression.Source); return(source.Distinct()); }
/// <summary> /// Resolves types for the specified expression. /// </summary> /// <param name="expression">The expression to resolve types for.</param> /// <returns>Expression with resolved types.</returns> public QueryExpression Visit(LinqDistinctExpression expression) { var source = this.ResolveTypes(expression.Source); return(new LinqDistinctExpression(source, source.ExpressionType)); }