我原来有一个LambdaExpressionSystem.Linq.Expressions.Expression<Func<IEnumerable<int>, IEnumerable<int>>> exp1 = a => a.Where( i => i > 0);但是我后来想变成System.Linq.Expressions.Expression<Func<IEnumerable<int>, IEnumerable<int>>> exp2 = a => a.Where(i => i > 0).Where(i=> i< 5);怎么能够给exp1后面加上Where(i => i <5)从而生成exp2阿?谢谢各位大侠了!
但是我不知道怎么才能把exp1和exp1_extra合并成exp2谢谢各位了。
conditions.Add(i => i > 0);
conditions.Add(i => i < 5);
Expression<Func<IEnumerable<int>, IEnumerable<int>>> exp2 = a => a.Where(i => (from d in conditions where !d(i) select d).Count() > 0);
var invoker = Expression.Invoke(exp1, p);
var caller = Expression.Call(invoker, typeof(Enumerable).GetMethod("Where"), p, (Expression<Func<int, bool>>)(i => i < 5));
var exp2 = Expression.Lambda<Func<IEnumerable<int>, IEnumerable<int>>>(caller, p);