@@ -157,14 +157,11 @@ module ObjectListFilter =
157157 let private stringType = typeof< string>
158158 let private genericIEnumerableType = typedefof< IEnumerable<_>>
159159
160- let private StringStartsWithMethod = stringType.GetMethod ( " StartsWith" , [| stringType |])
161- let private StringEndsWithMethod = stringType.GetMethod ( " EndsWith" , [| stringType |])
162- let private StringContainsMethod = stringType.GetMethod ( " Contains" , [| stringType |])
163160 let private stringComparisonType = typeof< StringComparison>
164- let private StringStartsWithWithComparisonMethod = stringType.GetMethod ( " StartsWith" , [| stringType; stringComparisonType |])
165- let private StringEndsWithWithComparisonMethod = stringType.GetMethod ( " EndsWith" , [| stringType; stringComparisonType |])
166- let private StringContainsWithComparisonMethod = stringType.GetMethod ( " Contains" , [| stringType; stringComparisonType |])
167- let private StringEqualsWithComparisonMethod = stringType.GetMethod ( " Equals" , [| stringType; stringComparisonType |])
161+ let private StringStartsWithMethod = stringType.GetMethod ( " StartsWith" , [| stringType; stringComparisonType |])
162+ let private StringEndsWithMethod = stringType.GetMethod ( " EndsWith" , [| stringType; stringComparisonType |])
163+ let private StringContainsMethod = stringType.GetMethod ( " Contains" , [| stringType; stringComparisonType |])
164+ let private StringEqualsMethod = stringType.GetMethod ( " Equals" , [| stringType; stringComparisonType |])
168165 let private unwrapOptionMethod =
169166 FSharp.Data.GraphQL.Helpers.moduleType.GetMethod ( nameof Helpers.unwrap)
170167
@@ -232,6 +229,7 @@ module ObjectListFilter =
232229 if obj.ReferenceEquals ( sc, StringComparer.OrdinalIgnoreCase) then ValueSome StringComparison.OrdinalIgnoreCase
233230 elif obj.ReferenceEquals ( sc, StringComparer.InvariantCultureIgnoreCase) then ValueSome StringComparison.InvariantCultureIgnoreCase
234231 elif obj.ReferenceEquals ( sc, StringComparer.CurrentCultureIgnoreCase) then ValueSome StringComparison.CurrentCultureIgnoreCase
232+ elif obj.ReferenceEquals ( sc, StringComparer.Ordinal) then ValueSome StringComparison.Ordinal
235233 elif obj.ReferenceEquals ( sc, StringComparer.InvariantCulture) then ValueSome StringComparison.InvariantCulture
236234 elif obj.ReferenceEquals ( sc, StringComparer.CurrentCulture) then ValueSome StringComparison.CurrentCulture
237235 else ValueNone
@@ -261,7 +259,7 @@ module ObjectListFilter =
261259 match comparerToStringComparison comparer with
262260 | ValueSome comparison ->
263261 let value = Helpers.unwrap ( box f.Value) :?> string
264- Expression.Not ( Expression.Call ( normalizeStringMemberExpr `` member `` , StringEqualsWithComparisonMethod , Expression.Constant ( value, typeof< string>), Expression.Constant comparison)) :> Expression
262+ Expression.Not ( Expression.Call ( normalizeStringMemberExpr `` member `` , StringEqualsMethod , Expression.Constant ( value, typeof< string>), Expression.Constant comparison)) :> Expression
265263 | ValueNone ->
266264 let hasEqualityOperator = hasEqualityOperator `` member `` .Type
267265 match f.Value with
@@ -280,7 +278,7 @@ module ObjectListFilter =
280278 match comparerToStringComparison comparer with
281279 | ValueSome comparison ->
282280 let value = Helpers.unwrap ( box f.Value) :?> string
283- Expression.Call ( normalizeStringMemberExpr `` member `` , StringEqualsWithComparisonMethod , Expression.Constant ( value, typeof< string>), Expression.Constant comparison) :> Expression
281+ Expression.Call ( normalizeStringMemberExpr `` member `` , StringEqualsMethod , Expression.Constant ( value, typeof< string>), Expression.Constant comparison) :> Expression
284282 | ValueNone ->
285283 let hasEqualityOperator = hasEqualityOperator `` member `` .Type
286284 match f.Value with
@@ -317,18 +315,12 @@ module ObjectListFilter =
317315 | NonEnumerableCast `` type `` -> Expression.LessThanOrEqual (( unsafeConvertTo `` type `` `` member `` ), Expression.Constant f.Value)
318316 | StartsWith ( f, comparer) ->
319317 let ``member`` = Expression.PropertyOrField ( param, f.FieldName)
320- match comparerToStringComparison comparer with
321- | ValueSome comparison ->
322- Expression.Call ( normalizeStringMemberExpr `` member `` , StringStartsWithWithComparisonMethod, Expression.Constant f.Value, Expression.Constant comparison)
323- | ValueNone ->
324- Expression.Call ( normalizeStringMemberExpr `` member `` , StringStartsWithMethod, Expression.Constant f.Value)
318+ let comparison = comparerToStringComparison comparer |> ValueOption.defaultValue StringComparison.Ordinal
319+ Expression.Call ( normalizeStringMemberExpr `` member `` , StringStartsWithMethod, Expression.Constant f.Value, Expression.Constant comparison)
325320 | EndsWith ( f, comparer) ->
326321 let ``member`` = Expression.PropertyOrField ( param, f.FieldName)
327- match comparerToStringComparison comparer with
328- | ValueSome comparison ->
329- Expression.Call ( normalizeStringMemberExpr `` member `` , StringEndsWithWithComparisonMethod, Expression.Constant f.Value, Expression.Constant comparison)
330- | ValueNone ->
331- Expression.Call ( normalizeStringMemberExpr `` member `` , StringEndsWithMethod, Expression.Constant f.Value)
322+ let comparison = comparerToStringComparison comparer |> ValueOption.defaultValue StringComparison.Ordinal
323+ Expression.Call ( normalizeStringMemberExpr `` member `` , StringEndsWithMethod, Expression.Constant f.Value, Expression.Constant comparison)
332324
333325 | Contains ( f, comparer) ->
334326 let ``member`` = Expression.PropertyOrField ( param, f.FieldName)
@@ -366,11 +358,8 @@ module ObjectListFilter =
366358 | :? FieldInfo as field when field.FieldType |> isEnumerable -> callContains field.FieldType
367359 | _ ->
368360 let unwrappedValue = Helpers.unwrap f.Value
369- match comparerToStringComparison comparer with
370- | ValueSome comparison ->
371- Expression.Call ( normalizeStringMemberExpr `` member `` , StringContainsWithComparisonMethod, Expression.Constant ( unwrappedValue :?> string, typeof< string>), Expression.Constant comparison)
372- | ValueNone ->
373- Expression.Call ( normalizeStringMemberExpr `` member `` , StringContainsMethod, Expression.Constant unwrappedValue)
361+ let comparison = comparerToStringComparison comparer |> ValueOption.defaultValue StringComparison.Ordinal
362+ Expression.Call ( normalizeStringMemberExpr `` member `` , StringContainsMethod, Expression.Constant ( unwrappedValue :?> string, typeof< string>), Expression.Constant comparison)
374363 | In f when not ( f.Value.IsEmpty) ->
375364 let ``member`` = Expression.PropertyOrField ( param, f.FieldName)
376365 let enumerableContains = getEnumerableContainsMethod objectType
0 commit comments