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 )); }
protected override QueryExpression Accept(QueryExpressionVisitor expressionVisitor) { return(expressionVisitor.Visit( QueryExpression.AliasReference(AliasIdentifier.AliasIdentifier) )); }