fork download
  1. using System;
  2. using System.Linq;
  3. using System.Linq.Expressions;
  4.  
  5. public class Test
  6. {
  7. public static void Main()
  8. {
  9.  
  10. long max = 12;
  11. int count = 2;
  12.  
  13. Expression<Func<long,int,bool>> condition;
  14.  
  15. Expression<Func<long,bool>> exp1 = x => x < max;
  16.  
  17. if (count > 0)
  18. {
  19. Expression<Func<int,bool>> exp2 = x => x > -1;
  20. condition = Expression.Lambda<Func<long,int,bool>>(
  21. Expression.AndAlso(
  22. Expression.Invoke(exp1, exp1.Parameters)
  23. , Expression.Invoke(exp2, exp2.Parameters)
  24. )
  25. , exp1.Parameters.Concat(exp2.Parameters)
  26. );
  27. } else {
  28. condition = Expression.Lambda<Func<long,int,bool>>(
  29. Expression.Invoke(exp1, exp1.Parameters)
  30. , exp1.Parameters.Concat(new[]{Expression.Parameter(typeof(int))})
  31. );
  32. }
  33. var comparator = condition.Compile();
  34.  
  35. }
  36. }
Success #stdin #stdout 0.16s 25472KB
stdin
Standard input is empty
stdout
Standard output is empty