/// <summary> /// Adds a SQL INNER JOIN to this SelectExpression. /// </summary> /// <param name="tableExpression"> The target table expression. </param> /// <param name="projection"> A sequence of expressions that should be added to the projection. </param> public virtual JoinExpressionBase AddInnerJoin( [NotNull] TableExpressionBase tableExpression, [NotNull] IEnumerable <Expression> projection) { Check.NotNull(tableExpression, nameof(tableExpression)); Check.NotNull(projection, nameof(projection)); var innerJoinExpression = new InnerJoinExpression(tableExpression); _tables.Add(innerJoinExpression); _projection.AddRange(projection); return(innerJoinExpression); }
/// <summary> /// Adds a SQL INNER JOIN to this SelectExpression. /// </summary> /// <param name="tableExpression"> The target table expression. </param> /// <param name="projection"> A sequence of expressions that should be added to the projection. </param> /// <param name="innerPredicate">A predicate which should be appended to current predicate. </param> public virtual PredicateJoinExpressionBase AddInnerJoin( [NotNull] TableExpressionBase tableExpression, [NotNull] IEnumerable <Expression> projection, [CanBeNull] Expression innerPredicate) { Check.NotNull(tableExpression, nameof(tableExpression)); Check.NotNull(projection, nameof(projection)); var innerJoinExpression = new InnerJoinExpression(tableExpression); _tables.Add(innerJoinExpression); _projection.AddRange(projection); if (innerPredicate != null) { Predicate = Predicate == null ? innerPredicate : AndAlso(Predicate, innerPredicate); } return(innerJoinExpression); }
private bool Equals(InnerJoinExpression other) => string.Equals(Alias, other.Alias) && Equals(QuerySource, other.QuerySource) && Equals(Predicate, other.Predicate);
public virtual JoinExpressionBase AddInnerJoin( [NotNull] TableExpressionBase tableExpression, [NotNull] IEnumerable<Expression> projection) { Check.NotNull(tableExpression, nameof(tableExpression)); Check.NotNull(projection, nameof(projection)); var innerJoinExpression = new InnerJoinExpression(tableExpression); _tables.Add(innerJoinExpression); _projection.AddRange(projection); return innerJoinExpression; }