diff --git a/src/NHibernate.Test/Async/Linq/WhereSubqueryTests.cs b/src/NHibernate.Test/Async/Linq/WhereSubqueryTests.cs index 2e67bea1c82..713b931e3b7 100644 --- a/src/NHibernate.Test/Async/Linq/WhereSubqueryTests.cs +++ b/src/NHibernate.Test/Async/Linq/WhereSubqueryTests.cs @@ -328,6 +328,17 @@ where timesheet.Entries.AsQueryable().Any(e => !new[] { 1 }.Contains(e.Id)) Assert.That(query.Count, Is.EqualTo(2)); } + [Test(Description = "GH-2471")] + public async Task TimeSheetsWithStringContainsSubQueryWithAsQueryableAfterWhereAsync() + { + var query = await (( + from timesheet in db.Timesheets + where timesheet.Entries.Where(e => e.Comments != null).AsQueryable().Any(e => e.Comments.Contains("testing")) + select timesheet).ToListAsync()); + + Assert.That(query.Count, Is.EqualTo(2)); + } + [Test(Description = "NH-3002")] public async Task HqlOrderLinesWithInnerJoinAndSubQueryAsync() { diff --git a/src/NHibernate.Test/Linq/WhereSubqueryTests.cs b/src/NHibernate.Test/Linq/WhereSubqueryTests.cs index f272d438707..99437428623 100644 --- a/src/NHibernate.Test/Linq/WhereSubqueryTests.cs +++ b/src/NHibernate.Test/Linq/WhereSubqueryTests.cs @@ -372,6 +372,17 @@ where timesheet.Entries.AsQueryable().Any(e => !new[] { 1 }.Contains(e.Id)) Assert.That(query.Count, Is.EqualTo(2)); } + [Test(Description = "GH-2471")] + public void TimeSheetsWithStringContainsSubQueryWithAsQueryableAfterWhere() + { + var query = ( + from timesheet in db.Timesheets + where timesheet.Entries.Where(e => e.Comments != null).AsQueryable().Any(e => e.Comments.Contains("testing")) + select timesheet).ToList(); + + Assert.That(query.Count, Is.EqualTo(2)); + } + [Test(Description = "NH-3002")] public void HqlOrderLinesWithInnerJoinAndSubQuery() { diff --git a/src/NHibernate/Linq/Visitors/SubQueryFromClauseFlattener.cs b/src/NHibernate/Linq/Visitors/SubQueryFromClauseFlattener.cs index 82b33c27b1d..51d276340c8 100644 --- a/src/NHibernate/Linq/Visitors/SubQueryFromClauseFlattener.cs +++ b/src/NHibernate/Linq/Visitors/SubQueryFromClauseFlattener.cs @@ -4,6 +4,7 @@ using Remotion.Linq.Clauses; using Remotion.Linq.Clauses.Expressions; using Remotion.Linq.Clauses.ExpressionVisitors; +using Remotion.Linq.Clauses.ResultOperators; using Remotion.Linq.EagerFetching; namespace NHibernate.Linq.Visitors @@ -15,7 +16,8 @@ public class SubQueryFromClauseFlattener : NhQueryModelVisitorBase typeof(LockResultOperator), typeof(FetchLazyPropertiesResultOperator), typeof(FetchOneRequest), - typeof(FetchManyRequest) + typeof(FetchManyRequest), + typeof(AsQueryableResultOperator) }; public static void ReWrite(QueryModel queryModel)