/// <summary> /// Creates a <see cref="DbJoinExpression"/> between the current 'FROM' clause and the expression returned by the <paramref name="target"/> functor. /// </summary> /// <param name="joinExpressionType">Specifies the type of join expression.</param> /// <param name="query">The target <see cref="DbQuery{TQueryExpression}"/></param> /// <param name="target">The target join expression.</param> /// <param name="condition">A <see cref="DbExpression"/> that specifies the join condition.</param> /// <returns><see cref="DbQuery{TQueryExpression}"/></returns> public static DbQuery <TQueryExpression> Join <TQueryExpression>(this DbQuery <TQueryExpression> query, DbJoinExpressionType joinExpressionType, DbExpression target, DbExpression condition) where TQueryExpression : DbQueryExpression, new() { var dbExpression = (DbExpression)DbExpressionFactory.MakeJoin(joinExpressionType, target, condition); if (!query.QueryExpression.FromExpression.IsNull()) { dbExpression = DbExpressionFactory.Concat(query.QueryExpression.FromExpression, dbExpression); } query.QueryExpression.FromExpression = dbExpression; return(query); }