如何在Parameters对象中查找指定值并判断其是否存在
该需求可以实现,这里提供两种成熟的实现方案:
方案1:数组索引匹配(推荐,精度最高)
Parameters!MyParam.Value本质是数组类型对象,你可以直接调用.NET内置的Array.IndexOf方法检测目标值是否存在,表达式写法如下:
=Array.IndexOf(Parameters!MyParam.Value, "Banana") > -1
- 逻辑说明:
Array.IndexOf会返回指定值在数组中的下标位置,如果值不存在则固定返回-1,只要返回结果大于-1就说明目标值存在,表达式会直接返回true - 适用场景:SSRS 2008R2及以上版本,无需考虑参数值包含特殊字符的问题
方案2:字符串拼接匹配(全版本兼容)
如果你使用的SSRS版本较旧不支持Array.IndexOf调用,可以搭配Join和InStr实现需求,写法如下:
=InStr("|" & Join(Parameters!MyParam.Value, "|") & "|", "|Banana|") > 0
- 逻辑说明:先用
Join方法把所有参数值用特殊分隔符(示例中用|,你可以替换为任何不会出现在你的参数值中的字符)拼接为一个完整字符串,前后额外加分隔符是为了避免部分匹配的误判(比如参数值为BananaPie时不会被误判定为匹配Banana),最后用InStr检测目标值是否存在即可 - 适用场景:所有版本的SSRS环境
内容的提问来源于stack exchange,提问作者Louis Chopard
相关产品推荐
相关产品推荐

