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)); }
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); }