You can dynamically generate a function to implement the operator you need:
public Func<T, T, T> GetOperator<T>(ExpressionType exprType)
{
var p1 = Expression.Parameter(typeof(T), "p1");
var p2 = Expression.Parameter(typeof(T), "p2");
var expr = Expression.MakeBinary(exprType, p1, p2);
var lambda = Expression.Lambda<Func<T, T, T>>(expr, p1, p2);
return lambda.Compile();
}
...
var op = GetOperator<int>(Something ? ExpressionType.Or : ExpressionType.And);
condition = op(condition, Class1.Class2.SomeId);
But this is probably overkill ... if you don't need a general solution, just use Brian's solution.
source
share