diff --git a/src/EFCore.InMemory/Query/Internal/InMemoryProjectionBindingExpressionVisitor.cs b/src/EFCore.InMemory/Query/Internal/InMemoryProjectionBindingExpressionVisitor.cs index 0438391a71d..5e143d40040 100644 --- a/src/EFCore.InMemory/Query/Internal/InMemoryProjectionBindingExpressionVisitor.cs +++ b/src/EFCore.InMemory/Query/Internal/InMemoryProjectionBindingExpressionVisitor.cs @@ -98,14 +98,6 @@ public virtual Expression Translate(InMemoryQueryExpression queryExpression, Exp || expression is EntityShaperExpression || expression is IncludeExpression)) { - // This skips the group parameter from GroupJoin - if (expression is ParameterExpression parameter - && parameter.Type.IsGenericType - && parameter.Type.GetGenericTypeDefinition() == typeof(IEnumerable<>)) - { - return parameter; - } - if (_indexBasedBinding) { switch (expression) diff --git a/src/EFCore.Relational/Query/Internal/RelationalProjectionBindingExpressionVisitor.cs b/src/EFCore.Relational/Query/Internal/RelationalProjectionBindingExpressionVisitor.cs index 8e135846dfa..8fa80ab4f63 100644 --- a/src/EFCore.Relational/Query/Internal/RelationalProjectionBindingExpressionVisitor.cs +++ b/src/EFCore.Relational/Query/Internal/RelationalProjectionBindingExpressionVisitor.cs @@ -106,14 +106,6 @@ public virtual Expression Translate(SelectExpression selectExpression, Expressio || expression is EntityShaperExpression || expression is IncludeExpression)) { - // This skips the group parameter from GroupJoin - if (expression is ParameterExpression parameter - && parameter.Type.IsGenericType - && parameter.Type.GetGenericTypeDefinition() == typeof(IEnumerable<>)) - { - return parameter; - } - if (_indexBasedBinding) { switch (expression) diff --git a/test/EFCore.Cosmos.FunctionalTests/Query/NorthwindSelectQueryCosmosTest.cs b/test/EFCore.Cosmos.FunctionalTests/Query/NorthwindSelectQueryCosmosTest.cs index d338d51eca7..bfb9593f173 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Query/NorthwindSelectQueryCosmosTest.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Query/NorthwindSelectQueryCosmosTest.cs @@ -1269,6 +1269,10 @@ public override async Task Reverse_after_orderBy_and_take(bool async) Assert.Equal(CosmosStrings.ReverseAfterSkipTakeNotSupported, message); } + [ConditionalTheory(Skip = "Issue #17246")] + public override Task Using_enumerable_parameter_in_projection(bool async) + => base.Using_enumerable_parameter_in_projection(async); + private void AssertSql(params string[] expected) => Fixture.TestSqlLoggerFactory.AssertBaseline(expected); diff --git a/test/EFCore.Specification.Tests/Query/NorthwindSelectQueryTestBase.cs b/test/EFCore.Specification.Tests/Query/NorthwindSelectQueryTestBase.cs index 955d72adbed..a2823703ab5 100644 --- a/test/EFCore.Specification.Tests/Query/NorthwindSelectQueryTestBase.cs +++ b/test/EFCore.Specification.Tests/Query/NorthwindSelectQueryTestBase.cs @@ -2390,4 +2390,32 @@ public virtual Task MemberInit_in_projection_without_arguments(bool async) AssertEqual(e.CustomerID, a.CustomerID); AssertEqual(e.Orders.Count(), a.Orders.Count()); }); + + + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual Task Using_enumerable_parameter_in_projection(bool async) + { + var customersToLoad = new List { "A" }; + var results = new List(); + + return AssertQuery( + async, + ss => ss.Set() + .Where(c => c.CustomerID.StartsWith("F")) + .Select(c => new + { + c.CustomerID, + Orders = customersToLoad.Contains("FISSA") + ? c.Orders.Select(e => new OrderDto()) + : results + }), + elementSorter: e => e.CustomerID, + elementAsserter: (e, a) => + { + AssertEqual(e.CustomerID, a.CustomerID); + AssertEqual(e.Orders.Count(), a.Orders.Count()); + }); + } }