【问题标题】:Linq expression builder, add conditional in divide caseLinq 表达式生成器,在除法中添加条件
【发布时间】:2011-09-30 14:57:34
【问题描述】:

作为一组更大的表达式的一部分,我们有我们的除法案例。很简单

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

我想更改它,以便在 left 为 0 时返回 0,如果 left != 0 则返回 0.. 像这样:

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

但我无法弄清楚当前显示为“left != 0”的条件位

?

【问题讨论】:

    标签: .net linq expression divide


    【解决方案1】:

    我认为你的意思是如果右等于零,你希望结果为零。所以你想像这样使用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))
    }
    

    【讨论】:

    • 实际上,在我们的例子中,我的意思是左侧(即不尝试除以 0 的检查),但您的回答符合我的要求,谢谢!
    猜你喜欢
    • 2019-08-02
    • 2019-07-11
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多