protected override ShapedQueryExpression TranslateAll(ShapedQueryExpression source, LambdaExpression predicate) { var selectExpression = (SelectExpression)source.QueryExpression; if (selectExpression.Limit != null || selectExpression.Offset != null) { selectExpression.PushdownIntoSubQuery(); } var translation = TranslateLambdaExpression(source, predicate); if (translation != null) { selectExpression.ApplyPredicate(_sqlExpressionFactory.Not(translation)); selectExpression.ReplaceProjection(new Dictionary <ProjectionMember, Expression>()); if (selectExpression.Limit == null && selectExpression.Offset == null) { selectExpression.ClearOrdering(); } translation = _sqlExpressionFactory.Exists(selectExpression, true); source.QueryExpression = _sqlExpressionFactory.Select(translation); source.ShaperExpression = new ProjectionBindingExpression(source.QueryExpression, new ProjectionMember(), typeof(bool)); return(source); } throw new InvalidOperationException(); }