@@ -20,6 +20,8 @@ namespace Xtensive.Orm.Rse.Transformation
2020{
2121 internal sealed class RedundantColumnRemover : ColumnMappingInspector
2222 {
23+ private static readonly System . Reflection . MethodInfo EnumerableSelectMethod ;
24+
2325 protected override Pair < CompilableProvider , List < int > > OverrideRightApplySource ( ApplyProvider applyProvider , CompilableProvider provider , List < int > requestedMapping )
2426 {
2527 var currentMapping = mappings [ applyProvider . Right ] ;
@@ -47,19 +49,22 @@ protected override Provider VisitRaw(RawProvider provider)
4749 private static Expression < Func < ParameterContext , IEnumerable < Tuple > > > RemapRawProviderSource (
4850 Expression < Func < ParameterContext , IEnumerable < Tuple > > > source , MapTransform mappingTransform )
4951 {
50- var selectMethodInfo = WellKnownTypes . Enumerable
51- . GetMethods ( )
52- . Single ( methodInfo => methodInfo . Name == nameof ( Enumerable . Select )
53- && methodInfo . GetParameters ( ) [ 1 ] . ParameterType . GetGenericTypeDefinition ( ) == typeof ( Func < , > ) )
54- . MakeGenericMethod ( WellKnownOrmTypes . Tuple , WellKnownOrmTypes . Tuple ) ;
55-
5652 Func < Tuple , Tuple > selector = tuple => mappingTransform . Apply ( TupleTransformType . Auto , tuple ) ;
57- var newExpression = Expression . Call ( selectMethodInfo , source . Body , Expression . Constant ( selector ) ) ;
53+ var newExpression = Expression . Call ( EnumerableSelectMethod , source . Body , Expression . Constant ( selector ) ) ;
5854 return ( Expression < Func < ParameterContext , IEnumerable < Tuple > > > ) FastExpression . Lambda ( newExpression , source . Parameters [ 0 ] ) ;
5955 }
6056
6157 // Constructors
6258
59+ static RedundantColumnRemover ( )
60+ {
61+ EnumerableSelectMethod = WellKnownTypes . Enumerable
62+ . GetMethods ( )
63+ . Single ( methodInfo => methodInfo . Name == nameof ( Enumerable . Select )
64+ && methodInfo . GetParameters ( ) [ 1 ] . ParameterType . GetGenericTypeDefinition ( ) == typeof ( Func < , > ) )
65+ . MakeGenericMethod ( WellKnownOrmTypes . Tuple , WellKnownOrmTypes . Tuple ) ;
66+ }
67+
6368 public RedundantColumnRemover ( CompilableProvider originalProvider )
6469 : base ( originalProvider )
6570 {
0 commit comments