2011-09-30 51 views
0

作爲更大集合表達式的一部分,我們有我們的分解案例。這是很簡單的Linq表達式生成器,在除法條件中添加條件

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

我想你的意思是,如果right等於零,你希望結果爲零。所以,你要使用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

其實在我們的情況下,我確實意味着左側(即不是試圖通過0檢查做除法),但你的答案做什麼我想要的,謝謝! –