Example #1
0
        private static void BuildSubQueryJoin(
            ExpressionBuilder builder,
            IBuildContext outerKeyContext, Expression outerKeySelector,
            Expression innerKeySelector,
            IBuildContext subQueryKeyContext, ISelectQuery subQuerySelect)
        {
            var predicate = builder.ConvertObjectComparison(
                ExpressionType.Equal,
                outerKeyContext, outerKeySelector,
                subQueryKeyContext, innerKeySelector);

            if (predicate == null)
            {
                predicate = new ExprExpr(
                    builder.ConvertToSql(outerKeyContext, outerKeySelector),
                    EOperator.Equal,
                    builder.ConvertToSql(subQueryKeyContext, innerKeySelector));

                predicate = builder.Convert(outerKeyContext, predicate);
            }

            subQuerySelect.Where.Search.Conditions.AddLast(new Condition(false, predicate));
        }
Example #2
0
        private static void BuildJoin(
            ExpressionBuilder builder,
            IJoin join,
            IBuildContext outerKeyContext, Expression outerKeySelector,
            IBuildContext innerKeyContext, Expression innerKeySelector)
        {
            var predicate = builder.ConvertObjectComparison(
                ExpressionType.Equal,
                outerKeyContext, outerKeySelector,
                innerKeyContext, innerKeySelector);

            if (predicate == null)
            {
                predicate = new ExprExpr(
                    builder.ConvertToSql(outerKeyContext, outerKeySelector),
                    EOperator.Equal,
                    builder.ConvertToSql(innerKeyContext, innerKeySelector));

                predicate = builder.Convert(outerKeyContext, predicate);
            }

            join.JoinedTable.Condition.Conditions.AddLast(new Condition(false, predicate));
        }