public void NoTransformationTest() { Expression <Func <int, int> > source = (p) => p - 2; var actual = new TransformExpressionVisitor().VisitAndConvert(source, ""); Assert.IsNotNull(actual); Assert.AreEqual("p => (p - 2)", actual.ToString()); }
public void TransformToDecrementTest() { Expression <Func <int, int> > source = (p) => p - 1; var actual = new TransformExpressionVisitor().VisitAndConvert(source, ""); Assert.IsNotNull(actual); Assert.AreEqual("p => Decrement(p)", actual.ToString()); }
public void ParameterIsExistExpression() { Expression <Func <int, int, int, int> > source = (a, b, c) => a + b + c; var actual = new TransformExpressionVisitor().Transformation(source, new Dictionary <string, object> { { "a", 21 }, //{ "b", 23 }, { "c", 4 } }); Console.WriteLine(actual); }
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()); }