@@ -45,32 +45,32 @@ protected override void ValidateAndPushOperand(Expression expression, Stack<stri
4545 {
4646 if ( binaryExpression . Right is ConstantExpression constantExpression )
4747 {
48- stack . Push ( BuildQueryPredicate ( binaryExpression . NodeType , memberExpression . Member , constantExpression ) ) ;
48+ stack . Push ( BuildQueryPredicate ( binaryExpression . NodeType , memberExpression , constantExpression ) ) ;
4949 }
5050 else if ( binaryExpression . Right is UnaryExpression uni )
5151 {
5252 switch ( uni . Operand )
5353 {
5454 case ConstantExpression c :
55- stack . Push ( BuildQueryPredicate ( binaryExpression . NodeType , memberExpression . Member , c ) ) ;
55+ stack . Push ( BuildQueryPredicate ( binaryExpression . NodeType , memberExpression , c ) ) ;
5656 break ;
5757 case MemberExpression mem when mem . Expression is ConstantExpression frame :
5858 {
5959 var val = ExpressionParserUtilities . GetValue ( mem . Member , frame . Value ) ;
60- stack . Push ( BuildQueryPredicate ( binaryExpression . NodeType , memberExpression . Member , System . Linq . Expressions . Expression . Constant ( val ) ) ) ;
60+ stack . Push ( BuildQueryPredicate ( binaryExpression . NodeType , memberExpression , System . Linq . Expressions . Expression . Constant ( val ) ) ) ;
6161 break ;
6262 }
6363 }
6464 }
6565 else if ( binaryExpression . Right is MemberExpression mem && mem . Expression is ConstantExpression frame )
6666 {
6767 var val = ExpressionParserUtilities . GetValue ( mem . Member , frame . Value ) ;
68- stack . Push ( BuildQueryPredicate ( binaryExpression . NodeType , memberExpression . Member , System . Linq . Expressions . Expression . Constant ( val ) ) ) ;
68+ stack . Push ( BuildQueryPredicate ( binaryExpression . NodeType , memberExpression , System . Linq . Expressions . Expression . Constant ( val ) ) ) ;
6969 }
7070 else
7171 {
7272 var val = ExpressionParserUtilities . GetOperandStringForQueryArgs ( binaryExpression . Right ) ;
73- stack . Push ( BuildQueryPredicate ( binaryExpression . NodeType , memberExpression . Member , System . Linq . Expressions . Expression . Constant ( val ) ) ) ;
73+ stack . Push ( BuildQueryPredicate ( binaryExpression . NodeType , memberExpression , System . Linq . Expressions . Expression . Constant ( val ) ) ) ;
7474 }
7575 }
7676 else if ( expression is ConstantExpression c
@@ -136,7 +136,7 @@ protected override void SplitBinaryExpression(BinaryExpression expression, Stack
136136 }
137137 }
138138
139- private static string BuildEqualityPredicate ( MemberInfo member , ConstantExpression expression )
139+ private static string BuildEqualityPredicate ( MemberInfo member , ConstantExpression expression , string memberStr )
140140 {
141141 var sb = new StringBuilder ( ) ;
142142 var fieldAttribute = member . GetCustomAttribute < SearchFieldAttribute > ( ) ;
@@ -145,7 +145,7 @@ private static string BuildEqualityPredicate(MemberInfo member, ConstantExpressi
145145 throw new InvalidOperationException ( "Searches can only be performed on fields marked with a RedisFieldAttribute with the SearchFieldType not set to None" ) ;
146146 }
147147
148- sb . Append ( $ "@ { member . Name } :") ;
148+ sb . Append ( $ "{ memberStr } :") ;
149149 var searchFieldType = fieldAttribute . SearchFieldType != SearchFieldType . INDEXED
150150 ? fieldAttribute . SearchFieldType
151151 : ExpressionTranslator . DetermineIndexFieldsType ( member ) ;
@@ -167,16 +167,17 @@ private static string BuildEqualityPredicate(MemberInfo member, ConstantExpressi
167167 return sb . ToString ( ) ;
168168 }
169169
170- private string BuildQueryPredicate ( ExpressionType expType , MemberInfo member , ConstantExpression constExpression )
170+ private string BuildQueryPredicate ( ExpressionType expType , MemberExpression member , ConstantExpression constExpression )
171171 {
172+ var memberStr = ExpressionParserUtilities . GetOperandString ( member ) ;
172173 var queryPredicate = expType switch
173174 {
174- ExpressionType . GreaterThan => $ "@ { member . Name } :[({ constExpression . Value } inf]",
175- ExpressionType . LessThan => $ "@ { member . Name } :[-inf ({ constExpression . Value } ]",
176- ExpressionType . GreaterThanOrEqual => $ "@ { member . Name } :[{ constExpression . Value } inf]",
177- ExpressionType . LessThanOrEqual => $ "@ { member . Name } :[-inf { constExpression . Value } ]",
178- ExpressionType . Equal => BuildEqualityPredicate ( member , constExpression ) ,
179- ExpressionType . NotEqual => $ "@ { member . Name } : -{{{constExpression.Value}}}",
175+ ExpressionType . GreaterThan => $ "{ memberStr } :[({ constExpression . Value } inf]",
176+ ExpressionType . LessThan => $ "{ memberStr } :[-inf ({ constExpression . Value } ]",
177+ ExpressionType . GreaterThanOrEqual => $ "{ memberStr } :[{ constExpression . Value } inf]",
178+ ExpressionType . LessThanOrEqual => $ "{ memberStr } :[-inf { constExpression . Value } ]",
179+ ExpressionType . Equal => BuildEqualityPredicate ( member . Member , constExpression , memberStr ) ,
180+ ExpressionType . NotEqual => $ "{ memberStr } : -{{{constExpression.Value}}}",
180181 _ => string . Empty
181182 } ;
182183 return queryPredicate ;
0 commit comments