예제 #1
0
        public JoinQueryExpression Build()
        {
            var rightIdentifier = QueryExpression.AliasReference(((IAliasIdentifier)this).AliasIdentifier);
            var leftIdentifier  = QueryExpression.AliasReference(Left.AliasIdentifier);

            var onCondition = default(QueryExpression);

            foreach (var columnPair in ColumnPairs)
            {
                var newCondition = QueryExpression.AreEqual(
                    QueryExpression.Column(columnPair.LeftColumnName, leftIdentifier),
                    QueryExpression.Column(columnPair.RightColumnName, rightIdentifier)
                    );
                onCondition = onCondition.AndAlso(newCondition);
            }

            return(QueryExpression.Join(
                       QueryExpression.As(
                           QueryExpression.AliasReference(Right.AliasIdentifier), rightIdentifier.IdentifierName, out var _
                           ),
                       onCondition,
                       Direction
                       ));
        }
예제 #2
0
 protected override QueryExpression Accept(QueryExpressionVisitor expressionVisitor)
 {
     return(expressionVisitor.Visit(
                QueryExpression.AliasReference(AliasIdentifier.AliasIdentifier)
                ));
 }