public ExpressionResolutionResult GetExpressionResolutionResult( ExpressionResolutionResult expressionResolutionResult, IMemberMap propertyMap, LetPropertyMaps letPropertyMaps) { var mapFrom = propertyMap.CustomMapExpression; if (!IsSubQuery() || letPropertyMaps.ConfigurationProvider.ResolveTypeMap(propertyMap.SourceType, propertyMap.DestinationType) == null) { return(new ExpressionResolutionResult(mapFrom.ReplaceParameters(propertyMap.CheckCustomSource(expressionResolutionResult, letPropertyMaps)))); } var customSource = propertyMap.ProjectToCustomSource; if (customSource == null) { return(new ExpressionResolutionResult(letPropertyMaps.GetSubQueryMarker(mapFrom), mapFrom)); } var newMapFrom = IncludedMember.Chain(customSource, mapFrom); return(new ExpressionResolutionResult(letPropertyMaps.GetSubQueryMarker(newMapFrom), newMapFrom)); bool IsSubQuery() { if (!(mapFrom.Body is MethodCallExpression methodCall)) { return(false); } var method = methodCall.Method; return(method.IsStatic && method.DeclaringType == typeof(Enumerable)); } }
public ConstructorParameterMap(ConstructorParameterMap parameterMap, IncludedMember includedMember) : this(includedMember.TypeMap, parameterMap.Parameter, parameterMap._sourceMembers, parameterMap.CanResolveValue) =>