BinaryExpression で条件のリストを結合したいと考えています。問題は、そのようにすべての条件を同じレベルにしたいということです:
真 == 真と真 == 偽と真 == 真と真 == 真と真 == 真か真 == 偽と真 == 真と真 == 真と真 == 真と真 == 真と真 == 真または真 == 真
しかし、式は次のように生成されます。
((((((((((True == True) And (True == False)) And (True == True)) And (True == True)) And (True == True)) または(True == False)) And (True == True)) And (True == True)) And (True == True)) And (True == True)) And (True == True)) Or (True ==真))
var currentExpr = this.MakeExpression(list.First());
foreach (bool obj in list.Skip(1))
{
var nextExpr = this.MakeExpression(obj);
switch (type)
{
case 1: // And
currentExpr = Expression.And(currentExpr, nextExpr);
break;
case 2: // Or
currentExpr = Expression.Or(currentExpr, nextExpr);
break;
}
}
private BinaryExpression MakeExpression(bool value)
{
BinaryExpression expression = Expression.Equal(Expression.Constant(true),Expression.Constant(value));
return expression;
}