internal static Key GetKey(this IGremlinQueryEnvironment environment, Expression expression) { var memberExpression = expression.AssumeMemberExpression(); return(memberExpression.TryGetWellKnownMember() == WellKnownMember.PropertyValue && memberExpression.Expression is MemberExpression sourceMemberExpression ? environment.GetCache().GetKey(sourceMemberExpression.Member) : environment.GetCache().GetKey(memberExpression.Member)); }
internal static Key GetKey(this IGremlinQueryEnvironment environment, Expression expression) { if (expression is LambdaExpression lambdaExpression) { return(environment.GetKey(lambdaExpression.Body)); } if (expression.Strip() is MemberExpression memberExpression) { return(memberExpression.TryGetWellKnownMember() == WellKnownMember.PropertyValue && memberExpression.Expression is MemberExpression sourceMemberExpression ? environment.GetCache().GetKey(sourceMemberExpression.Member) : environment.GetCache().GetKey(memberExpression.Member)); } throw new ExpressionNotSupportedException(expression); }