在rdlc报告中,我想比较像
这样的整数if(expression)
{
// do something
}
else if(expression)
{
// do something else
}
这是什么语法?
答案 0 :(得分:39)
我不喜欢使用嵌套的 IIF 语句,而是更喜欢 Switch 语句。
来自MSDN ......
=Switch(
Fields!PctComplete.Value >= 10, "Green",
Fields!PctComplete.Value >= 1, "Blue",
Fields!PctComplete.Value = 1, "Yellow",
Fields!PctComplete.Value <= 0, "Red"
)
希望它有助于:)
答案 1 :(得分:7)
你必须像这样嵌套IIF语句:
= IIF (expression = 1, "Is 1", IIF (expression = 2, "Is 2"))
答案 2 :(得分:1)
这是您要求的语法:
=IIf(CInt(Fields!expression1.value)==1,true,IIf(Cint(Fields!expression2.value)==2,true,nothing))
在实际部分中,您可以指定要执行的语句。
答案 3 :(得分:1)
请改用开关。我知道我来到这里很晚,但希望它可以帮助别人。
=Switch(Fields!Parameter.value = 2,"somethingnew", 1=1 ,"somethingelse")
1 = 1表示交换机情况下的默认值。
类似于
if(Parameter.Value == 2)
{
somethingnew
}
else
{
somethingelse
}
答案 4 :(得分:0)
您也可以尝试以下示例
= IIF(Parameters!expression.Value = True, 'somethingnew', 'somethingelse')
答案 5 :(得分:0)
除了上面所说的之外,If(condition, true_part, false_part)
三元运算符应该(带有一个 I
)优于 IIf(condition, true_part, false_part)
函数< /em>(带有两个 I
)在大多数情况下。
If()
ternary operator 将仅对与条件结果对应的部分进行短路评估(例如,True
的条件将仅评估 true_part
)。
IIf()
函数将始终评估条件和两个部分,因为它只是一个函数调用,函数的所有参数都将在调用之前评估。
由于开发人员通常期望在 IF 语句中进行短路评估,因此使用 If()
三元运算符应该是默认选择。
它允许您运行检查 Nothing
的表达式,如下所示,如果没有惰性求值就无法工作:
=If(Fields!Blog.Value IsNot Nothing, Fields!Blog.Value.Name, "Blog is missing")