@@ -33,14 +33,20 @@ public static Expression ReplaceParameter(this Expression expression,
3333 /// <typeparam name="T"></typeparam>
3434 /// <param name="filterOption"></param>
3535 /// <returns></returns>
36- public static Expression < Func < T , bool > > ToFilterExpression < T > ( this FilterQueryOption filterOption , HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption . Default , TimeZoneInfo timeZone = null )
36+ public static Expression < Func < T , bool > > ToFilterExpression < T > (
37+ this FilterQueryOption filterOption ,
38+ HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption . Default ,
39+ TimeZoneInfo timeZone = null ,
40+ bool enableConstantParameterization = true )
3741 {
3842 if ( filterOption == null )
3943 return null ;
4044
4145 IQueryable queryable = Enumerable . Empty < T > ( ) . AsQueryable ( ) ;
4246
43- queryable = filterOption . ApplyTo ( queryable , new ODataQuerySettings ( ) { HandleNullPropagation = handleNullPropagation , TimeZone = timeZone } ) ;
47+ queryable = filterOption . ApplyTo (
48+ queryable ,
49+ new ODataQuerySettings ( ) { HandleNullPropagation = handleNullPropagation , TimeZone = timeZone , EnableConstantParameterization = enableConstantParameterization } ) ;
4450
4551 MethodCallExpression whereMethodCallExpression = ( MethodCallExpression ) queryable . Expression ;
4652
@@ -53,13 +59,19 @@ public static Expression<Func<T, bool>> ToFilterExpression<T>(this FilterQueryOp
5359 /// <typeparam name="T"></typeparam>
5460 /// <param name="filterOption"></param>
5561 /// <returns></returns>
56- public static Expression < Func < T , bool > > ToSearchExpression < T > ( this SearchQueryOption filterOption , HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption . Default , TimeZoneInfo timeZone = null )
62+ public static Expression < Func < T , bool > > ToSearchExpression < T > (
63+ this SearchQueryOption filterOption ,
64+ HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption . Default ,
65+ TimeZoneInfo timeZone = null ,
66+ bool enableConstantParameterization = true )
5767 {
5868 if ( filterOption == null )
5969 return null ;
6070
6171 IQueryable queryable = Enumerable . Empty < T > ( ) . AsQueryable ( ) ;
62- queryable = filterOption . ApplyTo ( queryable , new ODataQuerySettings ( ) { HandleNullPropagation = handleNullPropagation , TimeZone = timeZone } ) ;
72+ queryable = filterOption . ApplyTo (
73+ queryable ,
74+ new ODataQuerySettings ( ) { HandleNullPropagation = handleNullPropagation , TimeZone = timeZone , EnableConstantParameterization = enableConstantParameterization } ) ;
6375
6476 MethodCallExpression whereMethodCallExpression = ( MethodCallExpression ) queryable . Expression ;
6577
@@ -68,7 +80,8 @@ public static Expression<Func<T, bool>> ToSearchExpression<T>(this SearchQueryOp
6880
6981 public static Expression < Func < T , bool > > ToFilterExpression < T > ( this ODataQueryOptions < T > options ,
7082 HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption . Default ,
71- TimeZoneInfo timeZone = null )
83+ TimeZoneInfo timeZone = null ,
84+ bool enableConstantParameterization = true )
7285 {
7386 if ( options is null || options . Filter is null && options . Search is null )
7487 {
@@ -80,14 +93,14 @@ public static Expression<Func<T, bool>> ToFilterExpression<T>(this ODataQueryOpt
8093 Expression filterExpression = null ;
8194 if ( options . Filter is not null )
8295 {
83- var raw = options . Filter . ToFilterExpression < T > ( handleNullPropagation , timeZone ) ;
96+ var raw = options . Filter . ToFilterExpression < T > ( handleNullPropagation , timeZone , enableConstantParameterization ) ;
8497 filterExpression = raw . Body . ReplaceParameter ( raw . Parameters [ 0 ] , parameter ) ;
8598 }
8699
87100 Expression searchExpression = null ;
88101 if ( options . Search is not null )
89102 {
90- var raw = options . Search . ToSearchExpression < T > ( handleNullPropagation , timeZone ) ;
103+ var raw = options . Search . ToSearchExpression < T > ( handleNullPropagation , timeZone , enableConstantParameterization ) ;
91104 searchExpression = raw . Body . ReplaceParameter ( raw . Parameters [ 0 ] , parameter ) ;
92105 }
93106
0 commit comments