internal MemberExpression?GetJoinPropertyExpression(Expression source, Expression parameter, IReadOnlyList <IEdmNavigationProperty> joinPath, IEdmProperty edmProperty)
        {
            Expression?propertyExpression = GetJoinPropertyExpression(parameter, joinPath);

            if (propertyExpression == null)
            {
                return(null);
            }

            PropertyInfo?propertyInfo = propertyExpression.Type.GetPropertyIgnoreCaseOrNull(edmProperty);

            if (propertyInfo != null)
            {
                return(Expression.Property(propertyExpression, propertyInfo));
            }

            if (OeExpressionHelper.IsPrimitiveType(propertyExpression.Type))
            {
                return((MemberExpression)propertyExpression);
            }

            var propertyTranslator = new OePropertyTranslator(source);

            return(propertyTranslator.Build(propertyExpression, edmProperty));
        }
Esempio n. 2
0
        private static MemberExpression FindInGroupByKey(Expression source, Expression key, MemberExpression propertyExpression)
        {
            if (propertyExpression.Expression is MemberExpression)
            {
                var propertyTranslator = new OePropertyTranslator(source);
                return(propertyTranslator.Build(key, (PropertyInfo)propertyExpression.Member));
            }

            return(null);
        }