@@ -102,45 +102,35 @@ public void InitializeExplicitSelectClause(FromClause fromClause)
102
102
// NOTE: This must be done *before* invoking setScalarColumnText() because setScalarColumnText()
103
103
// changes the AST!!!
104
104
var inheritedExpressions = new Dictionary < ISelectExpression , SelectClause > ( ) ;
105
- SelectExpressions = GetSelectExpressions ( ) ;
106
- OriginalSelectExpressions = SelectExpressions . ToList ( ) ;
105
+ var selExprs = GetSelectExpressions ( ) ;
106
+ OriginalSelectExpressions = selExprs ;
107
+ SelectExpressions = new List < ISelectExpression > ( selExprs . Count ) ;
107
108
NonScalarExpressions = new List < ISelectExpression > ( ) ;
108
- var length = SelectExpressions . Count ;
109
- for ( var i = 0 ; i < length ; i ++ )
109
+ foreach ( var expr in selExprs )
110
110
{
111
- var expr = SelectExpressions [ i ] ;
112
111
if ( expr . IsConstructor )
113
112
{
114
113
_constructorNode = ( ConstructorNode ) expr ;
115
114
_scalarSelect = true ;
116
- SelectExpressions . RemoveAt ( i ) ;
117
115
NonScalarExpressions . AddRange ( _constructorNode . GetSelectExpressions ( true , o => ! o . IsScalar ) ) ;
118
116
foreach ( var argumentExpression in _constructorNode . GetSelectExpressions ( ) )
119
117
{
120
- SelectExpressions . Insert ( i , argumentExpression ) ;
121
- i ++ ;
118
+ SelectExpressions . Add ( argumentExpression ) ;
122
119
AddExpression ( argumentExpression , queryReturnTypeList ) ;
123
120
}
124
-
125
- i -- ;
126
- length = SelectExpressions . Count ;
127
121
}
128
122
else if ( expr . FromElement is JoinSubqueryFromElement joinSubquery &&
129
123
TryProcessSubqueryExpressions ( expr , joinSubquery , out var selectClause , out var subqueryExpressions ) )
130
124
{
131
- SelectExpressions . RemoveAt ( i ) ;
132
125
var indexes = new List < int > ( subqueryExpressions . Count ) ;
133
126
foreach ( var expression in subqueryExpressions )
134
127
{
135
128
inheritedExpressions [ expression ] = selectClause ;
136
- indexes . Add ( i ) ;
137
- SelectExpressions . Insert ( i , expression ) ;
138
- i ++ ;
129
+ indexes . Add ( SelectExpressions . Count ) ;
130
+ SelectExpressions . Add ( expression ) ;
139
131
AddExpression ( expression , queryReturnTypeList ) ;
140
132
}
141
133
142
- i -- ;
143
- length = SelectExpressions . Count ;
144
134
_replacedExpressions . Add ( expr , indexes ) ;
145
135
}
146
136
else
@@ -150,6 +140,7 @@ public void InitializeExplicitSelectClause(FromClause fromClause)
150
140
NonScalarExpressions . Add ( expr ) ;
151
141
}
152
142
143
+ SelectExpressions . Add ( expr ) ;
153
144
AddExpression ( expr , queryReturnTypeList ) ;
154
145
}
155
146
}
0 commit comments