Пример #1
0
        /// <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(LinqJoinExpression expression)
        {
            var outer            = this.ResolveTypes(expression.Outer);
            var inner            = this.ResolveTypes(expression.Inner);
            var outerType        = ValidateSourceIsACollection(outer);
            var innerType        = ValidateSourceIsACollection(inner);
            var outerKeySelector = this.ResolveLambdaTypes(expression.OuterKeySelector, outerType);
            var innerKeySelector = this.ResolveLambdaTypes(expression.InnerKeySelector, innerType);

            var resultSelector = this.ResolveLambdaTypes(expression.ResultSelector, outerType, innerType);

            return(LinqBuilder.Join(outer, inner, outerKeySelector, innerKeySelector, resultSelector, resultSelector.Body.ExpressionType.CreateCollectionType()));
        }
Пример #2
0
 /// <summary>
 /// Visits a QueryExpression tree whose root node is the LinqJoinExpression.
 /// </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(LinqJoinExpression expression)
 {
     throw new TaupoNotSupportedException("Not supported");
 }
Пример #3
0
 /// <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(LinqJoinExpression expression)
 {
     return(this.VisitJoinExpressionBase(expression, "Join"));
 }
Пример #4
0
 /// <summary>
 /// Evaluates the specified expression.
 /// </summary>
 /// <param name="expression">The expression to evaluate.</param>
 /// <returns>Value of the expression.</returns>
 public QueryValue Visit(LinqJoinExpression expression)
 {
     return(this.EvaluateJoinExpression(expression, false));
 }
Пример #5
0
 /// <summary>
 /// Replaces the given expression.
 /// </summary>
 /// <param name="expression">The root node of the expression tree being visited.</param>
 /// <returns>Replaced expression.</returns>
 public virtual QueryExpression Visit(LinqJoinExpression expression)
 {
     return(this.VisitJoinExpressionBase(expression, LinqBuilder.Join));
 }