public S Execute <S>(Expression expression) { TransformMappingsMergerExpressionVisitor mergerVisitor = new TransformMappingsMergerExpressionVisitor(); mergerVisitor.Visit(expression); TransformSelectInserterExpressionVisitor selectInserterVisitor = new TransformSelectInserterExpressionVisitor(mergerVisitor.TypeMappings); expression = selectInserterVisitor.Visit(expression); TransformExpressionVisitor visitor = new TransformExpressionVisitor( _source, mergerVisitor.TypeMappings, mergerVisitor.PropertyMappings, mergerVisitor.SelectParameterMappings, mergerVisitor.ContainerClassMappings); Expression newExpression = visitor.Visit(expression); return((S)_source.Provider.Execute(newExpression)); }
public IEnumerator <T> GetEnumerator() { TransformMappingsMergerExpressionVisitor mergerVisitor = new TransformMappingsMergerExpressionVisitor(); mergerVisitor.Visit(_currentExpression); TransformSelectInserterExpressionVisitor selectInserterVisitor = new TransformSelectInserterExpressionVisitor(mergerVisitor.TypeMappings); Expression newExpression = selectInserterVisitor.Visit(_currentExpression); TransformExpressionVisitor visitor = new TransformExpressionVisitor( _source, mergerVisitor.TypeMappings, mergerVisitor.PropertyMappings, mergerVisitor.SelectParameterMappings, mergerVisitor.ContainerClassMappings); newExpression = visitor.Visit(newExpression); IQueryable <T> queryable = (IQueryable <T>)_source.Provider.CreateQuery(newExpression); return(queryable.GetEnumerator()); }