Skip to content

Commit c7726c2

Browse files
committed
WIP
Next step would be to change ProcessNonAggregatingGroupBy to correctly detect source expression for second result operator
1 parent d4b0f5a commit c7726c2

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

src/NHibernate/Linq/GroupBy/NonAggregatingGroupByRewriter.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System;
2+
using System.Linq;
23
using System.Linq.Expressions;
34
using NHibernate.Linq.ResultOperators;
5+
using NHibernate.Util;
46
using Remotion.Linq;
57
using Remotion.Linq.Clauses;
68
using Remotion.Linq.Clauses.ExpressionVisitors;
@@ -13,13 +15,18 @@ public static class NonAggregatingGroupByRewriter
1315
{
1416
public static void ReWrite(QueryModel queryModel)
1517
{
16-
if (queryModel.ResultOperators.Count == 1
17-
&& queryModel.ResultOperators[0] is GroupResultOperator
18-
&& IsNonAggregatingGroupBy(queryModel))
18+
if (queryModel.ResultOperators.All(r => r is GroupResultOperator)
19+
&& IsNonAggregatingGroupBy(queryModel))
1920
{
20-
var resultOperator = (GroupResultOperator)queryModel.ResultOperators[0];
21+
var resultOperators = queryModel.ResultOperators
22+
.ToArray(r => new NonAggregatingGroupBy((GroupResultOperator) r));
23+
2124
queryModel.ResultOperators.Clear();
22-
queryModel.ResultOperators.Add(new NonAggregatingGroupBy(resultOperator));
25+
foreach (var resultOperator in resultOperators)
26+
{
27+
queryModel.ResultOperators.Add(resultOperator);
28+
}
29+
2330
return;
2431
}
2532

@@ -103,4 +110,4 @@ public ClientSideSelect2(LambdaExpression selectClause)
103110
SelectClause = selectClause;
104111
}
105112
}
106-
}
113+
}

0 commit comments

Comments
 (0)