Skip to content

Commit c1e633c

Browse files
committed
Explicitly indicate result selector in SelectMany over GroupBy result is not supported
1 parent a9ec729 commit c1e633c

1 file changed

Lines changed: 12 additions & 7 deletions

File tree

Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,21 +1096,20 @@ private ProjectionExpression VisitSelectMany(Expression source, LambdaExpression
10961096
.Concat(state.Parameters)
10971097
.Concat(collectionSelector.Parameters)
10981098
.AddOne(outerParameter).ToArray();
1099-
state.Parameters = ArrayUtils<ParameterExpression>.EmptyArray;
1099+
state.Parameters = Array.Empty<ParameterExpression>();
11001100
state.RequestCalculateExpressionsOnce = true;
11011101
var visitedCollectionSelector = Visit(collectionSelector.Body);
11021102

11031103
if (visitedCollectionSelector.IsGroupingExpression()) {
11041104
var selectManyInfo = ((GroupingExpression) visitedCollectionSelector).SelectManyInfo;
11051105
if (selectManyInfo.GroupByProjection==null) {
1106-
LambdaExpression newResultSelector;
1107-
bool rewriteSucceeded = SelectManySelectorRewriter.TryRewrite(
1106+
var rewriteSucceeded = SelectManySelectorRewriter.TryRewrite(
11081107
resultSelector,
11091108
resultSelector.Parameters[0],
11101109
selectManyInfo.GroupJoinOuterKeySelector.Parameters[0],
1111-
out newResultSelector);
1110+
out var newResultSelector);
11121111

1113-
if (rewriteSucceeded)
1112+
if (rewriteSucceeded) {
11141113
return VisitJoin(
11151114
selectManyInfo.GroupJoinOuterProjection,
11161115
selectManyInfo.GroupJoinInnerProjection,
@@ -1119,9 +1118,15 @@ private ProjectionExpression VisitSelectMany(Expression source, LambdaExpression
11191118
newResultSelector,
11201119
isOuter,
11211120
expressionPart);
1121+
}
1122+
}
1123+
else {
1124+
if (resultSelector == null) {
1125+
return selectManyInfo.GroupByProjection;
1126+
}
1127+
1128+
throw new NotImplementedException();
11221129
}
1123-
else
1124-
return selectManyInfo.GroupByProjection;
11251130
}
11261131

11271132
var projection = VisitSequence(visitedCollectionSelector, collectionSelector);

0 commit comments

Comments
 (0)