public override Expression?Visit(Expression?expression) { if (expression is InMemoryQueryExpression inMemoryQueryExpression) { var clonedInMemoryQueryExpression = new InMemoryQueryExpression( inMemoryQueryExpression.ServerQueryExpression, inMemoryQueryExpression._valueBufferParameter) { _groupingParameter = inMemoryQueryExpression._groupingParameter, _singleResultMethodInfo = inMemoryQueryExpression._singleResultMethodInfo, _scalarServerQuery = inMemoryQueryExpression._scalarServerQuery }; clonedInMemoryQueryExpression._clientProjections.AddRange( inMemoryQueryExpression._clientProjections.Select(e => Visit(e))); clonedInMemoryQueryExpression._projectionMappingExpressions.AddRange( inMemoryQueryExpression._projectionMappingExpressions); foreach (var item in inMemoryQueryExpression._projectionMapping) { clonedInMemoryQueryExpression._projectionMapping[item.Key] = Visit(item.Value); } return(clonedInMemoryQueryExpression); } if (expression is EntityProjectionExpression entityProjectionExpression) { return(entityProjectionExpression.Clone()); } return(base.Visit(expression)); }
public InMemoryProjectionBindingRemovingExpressionVisitor(InMemoryQueryExpression queryExpression) { _queryExpression = queryExpression; }