1- // Copyright (C) 2009-2020 Xtensive LLC.
1+ // Copyright (C) 2009-2021 Xtensive LLC.
22// This code is distributed under MIT license terms.
33// See the License.txt file in the project root for more information.
44// Created by: Alexey Gamzov
@@ -40,18 +40,15 @@ protected override Expression VisitMemberAccess(MemberExpression m)
4040
4141 protected override Expression VisitGroupingExpression ( GroupingExpression expression )
4242 {
43- var newProvider = Rewrite ( expression . ProjectionExpression . ItemProjector . DataSource , oldApplyParameter , newApplyParameter ) ;
44- var newItemProjectorBody = Visit ( expression . ProjectionExpression . ItemProjector . Item ) ;
43+ var projectionExpression = expression . ProjectionExpression ;
44+ var newProvider = Rewrite ( projectionExpression . ItemProjector . DataSource , oldApplyParameter , newApplyParameter ) ;
45+ var newItemProjectorBody = Visit ( projectionExpression . ItemProjector . Item ) ;
4546 var newKeyExpression = Visit ( expression . KeyExpression ) ;
46- if ( newProvider != expression . ProjectionExpression . ItemProjector . DataSource
47- || newItemProjectorBody != expression . ProjectionExpression . ItemProjector . Item
48- || newKeyExpression != expression . KeyExpression ) {
49- var newItemProjector = new ItemProjectorExpression ( newItemProjectorBody , newProvider , expression . ProjectionExpression . ItemProjector . Context ) ;
50- var newProjectionExpression = new ProjectionExpression (
51- expression . ProjectionExpression . Type ,
52- newItemProjector ,
53- expression . ProjectionExpression . TupleParameterBindings ,
54- expression . ProjectionExpression . ResultAccessMethod ) ;
47+ if ( newProvider != projectionExpression . ItemProjector . DataSource
48+ || newItemProjectorBody != projectionExpression . ItemProjector . Item
49+ || newKeyExpression != expression . KeyExpression ) {
50+ var newItemProjector = new ItemProjectorExpression ( newItemProjectorBody , newProvider , projectionExpression . ItemProjector . Context ) ;
51+ var newProjectionExpression = projectionExpression . Apply ( newItemProjector ) ;
5552 return new GroupingExpression (
5653 expression . Type , expression . OuterParameter , expression . DefaultIfEmpty , newProjectionExpression ,
5754 expression . ApplyParameter , expression . KeyExpression , expression . SelectManyInfo ) ;
@@ -61,17 +58,14 @@ protected override Expression VisitGroupingExpression(GroupingExpression express
6158
6259 protected override Expression VisitSubQueryExpression ( SubQueryExpression expression )
6360 {
64- var newProvider = Rewrite ( expression . ProjectionExpression . ItemProjector . DataSource , oldApplyParameter , newApplyParameter ) ;
65- var newItemProjectorBody = Visit ( expression . ProjectionExpression . ItemProjector . Item ) ;
66- if ( newProvider != expression . ProjectionExpression . ItemProjector . DataSource
67- || newItemProjectorBody != expression . ProjectionExpression . ItemProjector . Item ) {
61+ var projectionExpression = expression . ProjectionExpression ;
62+ var newProvider = Rewrite ( projectionExpression . ItemProjector . DataSource , oldApplyParameter , newApplyParameter ) ;
63+ var newItemProjectorBody = Visit ( projectionExpression . ItemProjector . Item ) ;
64+ if ( newProvider != projectionExpression . ItemProjector . DataSource
65+ || newItemProjectorBody != projectionExpression . ItemProjector . Item ) {
6866 var newItemProjector = new ItemProjectorExpression (
69- newItemProjectorBody , newProvider , expression . ProjectionExpression . ItemProjector . Context ) ;
70- var newProjectionExpression = new ProjectionExpression (
71- expression . ProjectionExpression . Type ,
72- newItemProjector ,
73- expression . ProjectionExpression . TupleParameterBindings ,
74- expression . ProjectionExpression . ResultAccessMethod ) ;
67+ newItemProjectorBody , newProvider , projectionExpression . ItemProjector . Context ) ;
68+ var newProjectionExpression = projectionExpression . Apply ( newItemProjector ) ;
7569 return new SubQueryExpression (
7670 expression . Type , expression . OuterParameter , expression . DefaultIfEmpty , newProjectionExpression ,
7771 expression . ApplyParameter , expression . ExtendedType ) ;
0 commit comments