Построитель выражений Linq, добавьте условное выражение в случае деления - PullRequest
0 голосов
/ 30 сентября 2011

Как часть большего набора выражений, у нас есть деление.Это достаточно просто

protected override Expression BuildDivideExpression(Expression left, Expression right)
{           
    return Expression.Divide(left, right);
}

Я бы хотел изменить его так, чтобы он возвращал 0, если оставлено 0, и как есть, если осталось! = 0 .. Примерно так:

protected override Expression BuildDivideExpression(Expression left, Expression right)
{
    return Expression.Condition(left != 0, Expression.Constant(0), Expression.Divide(left, right))
}

Но я не могу понять, какой условный бит в настоящее время отображается как «left! = 0»

?

1 Ответ

1 голос
/ 30 сентября 2011

Я думаю, вы имеете в виду, что если право равно нулю, вы хотите, чтобы результат был равен нулю.Итак, вы хотите использовать Expression.Equal примерно так

protected override Expression BuildDivideExpression(Expression left, Expression right)
{
    return Expression.Condition(Expression.Equal(right, Expression.Constant(0)),
                                Expression.Constant(0), 
                                Expression.Divide(left, right))
}
...