protected override Expression VisitQuerySourceReferenceExpression (QuerySourceReferenceExpression expression)
{
var groupJoinClause = expression.ReferencedQuerySource as GroupJoinClause;
if (groupJoinClause != null)
{
var fromExpressionInfo = AnalyzeFromExpression (
groupJoinClause.JoinClause.InnerSequence,
Stage,
_generator,
MethodCallTransformerProvider,
Context,
_tableGenerator);
Context.AddExpressionMapping (new QuerySourceReferenceExpression (groupJoinClause.JoinClause), fromExpressionInfo.ItemSelector);
var whereCondition =
Stage.PrepareWhereExpression (
Expression.Equal (groupJoinClause.JoinClause.OuterKeySelector, groupJoinClause.JoinClause.InnerKeySelector), Context);
if (fromExpressionInfo.WhereCondition != null)
whereCondition = Expression.AndAlso (fromExpressionInfo.WhereCondition, whereCondition);
FromExpressionInfo = new FromExpressionInfo (
fromExpressionInfo.SqlTable,
fromExpressionInfo.ExtractedOrderings.ToArray(),
fromExpressionInfo.ItemSelector,
whereCondition);
return new SqlTableReferenceExpression (fromExpressionInfo.SqlTable);
}
return base.VisitQuerySourceReferenceExpression (expression);
}