Example #1
0
        public void ApplyJoin(JoinType joinType, TableRef inner, LambdaExpression outerKeySelector, LambdaExpression innerKeySelector, LambdaExpression membersSelector)
        {
            var left = new StatementBlock(query.QueryBatch, outerKeySelector.Body, new QueryMapWithLambdaParam(query.QueryMap, outerKeySelector.Parameters[0]));
            var right = new StatementBlock(query.QueryBatch, innerKeySelector.Body, new QueryMapWithLambdaParam(inner.QueryMap, innerKeySelector.Parameters[0]));
            Joins.Add(new JoinBlock(query, joinType, inner, new StatementBlock($"{left} = {right}")));

            var p1 = new QueryMapWithLambdaParam(query.QueryMap, membersSelector.Parameters[0]);
            var p2 = new QueryMapWithLambdaParam(inner.QueryMap, membersSelector.Parameters[1]);
            query.QueryMap = new MapTransformer(p1, p2).Transform(membersSelector.Body);
        }
Example #2
0
 public static QueryMap Transform(LambdaExpression lambda, QueryMap fromMap)
 {
     var p = new QueryMapWithLambdaParam(fromMap, lambda.Parameters[0]);
     return new MapTransformer(p).Transform(lambda.Body);
 }