@@ -804,57 +804,46 @@ type GroupResultItems<'key, 'SqlEntity>(keyname:String*String*String*String*Stri
804804 match columnName with
805805 | None -> ( keyname |> fun ( x , _ , _ , _ , _ , _ , _ ) -> x) .ToUpperInvariant()
806806 | Some c -> c.ToUpperInvariant()
807+
808+ // Pre-compute the filter strings to avoid repeated string operations
809+ let fetchColFilter = " _" + fetchCol
810+ let itemTypeFilter = itemType + " _"
811+
812+ let filterColumnValues ( columnValues : seq < string * obj >) =
813+ columnValues |> Seq.filter( fun ( s , k ) ->
814+ let sUp = s.ToUpperInvariant()
815+ ( sUp.Contains fetchColFilter || columnName.IsNone) &&
816+ sUp.Contains itemTypeFilter)
817+
807818 let itms =
808819 match box distinctItem with
809820 | :? SqlEntity ->
810821 let ent = unbox< SqlEntity> distinctItem
811- ent.ColumnValues
812- |> Seq.filter( fun ( s , k ) ->
813- let sUp = s.ToUpperInvariant()
814- ( sUp.Contains( " _" + fetchCol) || columnName.IsNone) &&
815- ( sUp.Contains( itemType+ " _" )))
822+ filterColumnValues ent.ColumnValues
816823 | :? Tuple< SqlEntity, SqlEntity> ->
817824 let ent1 , ent2 = unbox< SqlEntity* SqlEntity> distinctItem
818825 Seq.concat [| ent1.ColumnValues; ent2.ColumnValues; |]
819- |> Seq.distinct |> Seq.filter( fun ( s , k ) ->
820- let sUp = s.ToUpperInvariant()
821- ( sUp.Contains( " _" + fetchCol) || columnName.IsNone) &&
822- ( sUp.Contains( itemType+ " _" )))
826+ |> Seq.distinct |> filterColumnValues
823827 | :? Tuple< SqlEntity, SqlEntity, SqlEntity> ->
824828 let ent1 , ent2 , ent3 = unbox< SqlEntity* SqlEntity* SqlEntity> distinctItem
825829 Seq.concat [| ent1.ColumnValues; ent2.ColumnValues; ent3.ColumnValues;|]
826- |> Seq.distinct |> Seq.filter( fun ( s , k ) ->
827- let sUp = s.ToUpperInvariant()
828- ( sUp.Contains( " _" + fetchCol) || columnName.IsNone) &&
829- ( sUp.Contains( itemType+ " _" )))
830+ |> Seq.distinct |> filterColumnValues
830831 | :? Tuple< SqlEntity, SqlEntity, SqlEntity, SqlEntity> ->
831832 let ent1 , ent2 , ent3 , ent4 = unbox< SqlEntity* SqlEntity* SqlEntity* SqlEntity> distinctItem
832833 Seq.concat [| ent1.ColumnValues; ent2.ColumnValues; ent3.ColumnValues; ent4.ColumnValues;|]
833- |> Seq.distinct |> Seq.filter( fun ( s , k ) ->
834- let sUp = s.ToUpperInvariant()
835- ( sUp.Contains( " _" + fetchCol) || columnName.IsNone) &&
836- ( sUp.Contains( itemType+ " _" )))
834+ |> Seq.distinct |> filterColumnValues
837835 | :? Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject< SqlEntity, SqlEntity> ->
838836 let ent = unbox< Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject< SqlEntity, SqlEntity>> distinctItem
839837 Seq.concat [| ent.Item1.ColumnValues; ent.Item2.ColumnValues; |]
840- |> Seq.distinct |> Seq.filter( fun ( s , k ) ->
841- let sUp = s.ToUpperInvariant()
842- ( sUp.Contains( " _" + fetchCol) || columnName.IsNone) &&
843- ( sUp.Contains( itemType+ " _" )))
838+ |> Seq.distinct |> filterColumnValues
844839 | :? Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject< SqlEntity, SqlEntity, SqlEntity> ->
845840 let ent = unbox< Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject< SqlEntity, SqlEntity, SqlEntity>> distinctItem
846841 Seq.concat [| ent.Item1.ColumnValues; ent.Item2.ColumnValues; ent.Item3.ColumnValues; |]
847- |> Seq.distinct |> Seq.filter( fun ( s , k ) ->
848- let sUp = s.ToUpperInvariant()
849- ( sUp.Contains( " _" + fetchCol) || columnName.IsNone) &&
850- ( sUp.Contains( itemType+ " _" )))
842+ |> Seq.distinct |> filterColumnValues
851843 | :? Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject< SqlEntity, SqlEntity, SqlEntity, SqlEntity> ->
852844 let ent = unbox< Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject< SqlEntity, SqlEntity, SqlEntity, SqlEntity>> distinctItem
853845 Seq.concat [| ent.Item1.ColumnValues; ent.Item2.ColumnValues; ent.Item3.ColumnValues; ent.Item4.ColumnValues; |]
854- |> Seq.distinct |> Seq.filter( fun ( s , k ) ->
855- let sUp = s.ToUpperInvariant()
856- ( sUp.Contains( " _" + fetchCol) || columnName.IsNone) &&
857- ( sUp.Contains( itemType+ " _" )))
846+ |> Seq.distinct |> filterColumnValues
858847 | _ -> failwith ( " Unknown aggregate item: " + typeof< 'SqlEntity>. Name)
859848 let itm =
860849 if Seq.isEmpty itms then
0 commit comments