我有一个linq查询,我试图在SSRS报告中重建。我需要对数据集应用过滤器,但似乎无法完全理解如何做到这一点。 linq过滤数据的方式对我来说非常有意义,我无法弄清楚如何将其转换为过滤器。
我为三个不同的行BLOCKED,CUSTFILE和UserType
设置了过滤器当我以编程方式调用报表时,我从服务器代码中接收以下值作为参数:会话(“UserType”),Profile.PflCUSTFILEID,Profile.pflUSERID
If Session("UserType") = 100 Then ' RCUSER ADMIN
users = users.Where(Function(c) c.BLOCKED = 0)
ElseIf Session("UserType") = 80 Then ' CUSTFILE ADMIN
users = users.Where(Function(c) c.BLOCKED = 0 And c.CUSTFILE = Profile.pflCUSTFILEID And c.UserType <= 80)
Else ' INDIVIDUAL
' FUTURE: Draw users based on themselves or those reporting to them, and those reporting to those people.
users = users.Where(Function(c) c.USERS = Profile.pflUSERID)
End If
答案 0 :(得分:0)
您需要http://rextester.com/ULH84019。自从我上次做SSRS以来已经有一段时间了,但基本上有两种类型的参数,用户和计算。忘记用户会话,它在SSRS范围内不可用。你需要问用户一些东西。您可以use calculated parameters。
然后,您需要以始终接受参数的方式构造查询,而不是修改实际查询。使用ISNULL,COALESCE等组合以及字段名称作为备份。因此归结为field_name = field_name
,这意味着该字段不会成为过滤器的一部分。如果存在性能问题,您可以在查询中使用OPTION (RECOMPILE)
,但请确保其合理。 ISNULL和类似的数据与DB索引不兼容。