@@ -87,7 +87,7 @@ protected override Expression VisitBinaryExpression (BinaryExpression expression
8787 break ;
8888
8989 case ExpressionType . Subtract :
90- _expression . Append ( " aub " ) ;
90+ _expression . Append ( " sub " ) ;
9191 break ;
9292
9393 case ExpressionType . Multiply :
@@ -116,8 +116,18 @@ protected override Expression VisitBinaryExpression (BinaryExpression expression
116116
117117 protected override Expression VisitMemberExpression ( MemberExpression expression )
118118 {
119- VisitExpression ( expression . Expression ) ;
120- _expression . AppendFormat ( "{0}" , expression . Member . Name ) ;
119+ // this seems sort of hacky
120+ // it is not recognizing Length as a method but as a Member, so let's specifically deal with it here I guess
121+ if ( expression . Member . Name == "Length" )
122+ {
123+ var parts = ( ( MemberExpression ) expression . Expression ) . Member . Name . Split ( '.' ) ;
124+ _expression . AppendFormat ( "length({0})" , parts [ parts . Length - 1 ] ) ;
125+ }
126+ else
127+ {
128+ VisitExpression ( expression . Expression ) ;
129+ _expression . AppendFormat ( "{0}" , expression . Member . Name ) ;
130+ }
121131
122132 return expression ;
123133 }
@@ -178,7 +188,7 @@ protected override Expression VisitNewExpression(NewExpression expression)
178188
179189 return expression ;
180190
181- return base . VisitNewExpression ( expression ) ;
191+ // return base.VisitNewExpression(expression);
182192 }
183193
184194 protected override Expression VisitMethodCallExpression ( MethodCallExpression expression )
@@ -187,45 +197,46 @@ protected override Expression VisitMethodCallExpression (MethodCallExpression ex
187197
188198 if ( expression . Method . Name == "Contains" )
189199 {
190- _expression . Append ( String . Format ( "substringof('{1}',{0}) eq true" ,
191- VisitExpression ( expression . Object ) ,
192- VisitExpression ( expression . Arguments [ 0 ] ) ) ) ;
200+ _expression . Append ( "substringof(" ) ;
201+ VisitExpression ( expression . Arguments [ 0 ] ) ;
202+ _expression . Append ( "," ) ;
203+ VisitExpression ( expression . Object ) ;
204+ _expression . Append ( ") eq true" ) ;
193205 return expression ;
194206 }
195207
196208 if ( expression . Method . Name == "StartsWith" )
197209 {
198- _expression . Append ( String . Format ( "startswith({0},'{1}') eq true" ,
199- VisitExpression ( expression . Object ) ,
200- VisitExpression ( expression . Arguments [ 0 ] ) ) ) ;
210+ _expression . Append ( "startswith(" ) ;
211+ VisitExpression ( expression . Object ) ;
212+ _expression . Append ( "," ) ;
213+ VisitExpression ( expression . Arguments [ 0 ] ) ;
214+ _expression . Append ( ") eq true" ) ;
201215 return expression ;
202216 }
203217
204218 if ( expression . Method . Name == "EndsWith" )
205219 {
206- _expression . Append ( String . Format ( "endswith({0},'{1}') eq true" ,
207- VisitExpression ( expression . Object ) ,
208- VisitExpression ( expression . Arguments [ 0 ] ) ) ) ;
209- return expression ;
210- }
211-
212- if ( expression . Method . Name == "Length" )
213- {
214- _expression . Append ( String . Format ( "length({0})" ,
215- VisitExpression ( expression . Object ) ) ) ;
220+ _expression . Append ( "endswith(" ) ;
221+ VisitExpression ( expression . Object ) ;
222+ _expression . Append ( "," ) ;
223+ VisitExpression ( expression . Arguments [ 0 ] ) ;
224+ _expression . Append ( ") eq true" ) ;
216225 return expression ;
217226 }
218227
219228 if ( expression . Method . Name == "ToLower" )
220229 {
221- _expression . Append ( String . Format ( "tolower({0})" ,
222- VisitExpression ( expression . Object ) ) ) ;
230+ _expression . Append ( "tolower(" ) ;
231+ VisitExpression ( expression . Object ) ;
232+ _expression . Append ( ")" ) ;
223233 return expression ;
224234 }
225- if ( expression . Method . Name == "ToUper " )
235+ if ( expression . Method . Name == "ToUpper " )
226236 {
227- _expression . Append ( String . Format ( "touper({0})" ,
228- VisitExpression ( expression . Object ) ) ) ;
237+ _expression . Append ( "toupper(" ) ;
238+ VisitExpression ( expression . Object ) ;
239+ _expression . Append ( ")" ) ;
229240 return expression ;
230241 }
231242
0 commit comments