C# 传递给SSRS报告多个整数值

C# 传递给SSRS报告多个整数值,c#,.net,reporting-services,ssrs-2008,C#,.net,Reporting Services,Ssrs 2008,我试图从C#代码整数的多个数组传递到SSRS报告 var rsExec = new ReportExecutionServiceSoapClient(binding, new EndpointAddress(config.ReportExecutionUrl)); ParameterValue[] reportParam = new ParameterValue[] { new ParameterValue { Name = "pCityId", Value = c

我试图从C#代码整数的多个数组传递到SSRS报告

var rsExec = new ReportExecutionServiceSoapClient(binding, new EndpointAddress(config.ReportExecutionUrl));

ParameterValue[] reportParam = new ParameterValue[] {
    new ParameterValue { Name = "pCityId", Value = cityId.ToString() },
    new ParameterValue { Name = "pDepartmentIds", Value = string.Join(",", departmentIds) },
    new ParameterValue { Name = "pBuildingIds", Value = string.Join(",", buidingIds) }
};

await rsExec.SetExecutionParametersAsync(null, null, reportParam, "en-us");

由于ParameterValue的值类型是“string”,似乎我别无选择,只能将CSV作为参数传递给报表

然后,在报告中,我可以使用数据类型作为整数,并说我正在传递“多个值”,但是如何从C代码中执行呢


PS.与此相关

要在选择了允许多个值选项的情况下发送参数,您需要为报告将要使用的每个值发送一个新的
参数值
对象,所有对象都具有相同的
名称

在上述情况下,您需要为
departmentIds
集合中的每个值发送
ParameterValue
,所有值都具有相同的参数名称(“pDepartmentIds”)

因此,如果有3个部门ID要发送,那么
reportParam
数组应该包含3个
ParameterValue
对象,所有对象的名称都是“pDepartmentIds”,每个部门ID对应一个

ParameterValue[] reportParam = new ParameterValue[] {
    new ParameterValue { Name = "pCityId", Value = cityId.ToString() },
    new ParameterValue { Name = "pDepartmentIds", Value = "1" },
    new ParameterValue { Name = "pDepartmentIds", Value = "2" },
    new ParameterValue { Name = "pDepartmentIds", Value = "3" },
    ...
};

buildingIds执行类似的操作

要发送参数,如果选择了允许多个值选项,则需要为报告将要使用的每个值发送一个新的
ParameterValue
对象,所有对象都具有相同的
名称

在上述情况下,您需要为
departmentIds
集合中的每个值发送
ParameterValue
,所有值都具有相同的参数名称(“pDepartmentIds”)

因此,如果有3个部门ID要发送,那么
reportParam
数组应该包含3个
ParameterValue
对象,所有对象的名称都是“pDepartmentIds”,每个部门ID对应一个

ParameterValue[] reportParam = new ParameterValue[] {
    new ParameterValue { Name = "pCityId", Value = cityId.ToString() },
    new ParameterValue { Name = "pDepartmentIds", Value = "1" },
    new ParameterValue { Name = "pDepartmentIds", Value = "2" },
    new ParameterValue { Name = "pDepartmentIds", Value = "3" },
    ...
};

buildingIds

执行类似操作,多个值将是c#中的一个数组:新参数Value{Name=“pBuildingIds”,Value=newint[]{1,2,3,4}}@jdweng谢谢,如前所述,值是字符串类型SSRS中的类型必须与c#匹配。图片显示的是整数(不是字符串)。图片来自SSRS侧。字符串在C端……我认为您需要做的是为
departmentIds
集合中的每个值发送一个
ParameterValue
,所有这些值都具有相同的参数名称(“pDepartmentIds”)。因此,如果有3个部门ID要发送,那么
reportParam
数组应该包含3个
ParameterValue
对象,所有对象的名称都是“pDepartmentIds”,每个部门ID对应一个对象。与
buildingIds
类似。多个值将是c#中的一个数组:新参数值{name=“pBuildingIds”,Value=new int[]{1,2,3,4}@jdweng谢谢,如前所述,值是字符串类型SSRS中的类型必须与c#匹配。图片显示的是整数(不是字符串)。图片来自SSRS侧。字符串在C端……我认为您需要做的是为
departmentIds
集合中的每个值发送一个
ParameterValue
,所有这些值都具有相同的参数名称(“pDepartmentIds”)。因此,如果有3个部门ID要发送,
reportParam
数组应该包含3个
ParameterValue
对象,所有对象的名称都是“pDepartmentIds”,每个部门ID对应一个。类似于
buildingIds
。或者,参数的类型可以设置为“integer”,即使值类型是string,报告中的类型将被推断为double或integer…我想可能就是这样。将其留给报表来验证传入的值。我很高兴这对你有帮助。我不得不挖掘找到一个旧的SSRS解决方案,我写了一段时间来记住这一点。有一段时间,我以为密码丢了。这周我将把它输入git。是的,这真的很有帮助,因为在此之前我只能使用CSV值传递一个整数数组,然后需要在SSR中解析它,这不是很酷。。。现在是OK(可选),参数的类型可以设置为“integer”,即使值类型是string,该类型也会在报告中推断为double或integer…我想可能是这样的。将其留给报表来验证传入的值。我很高兴这对你有帮助。我不得不挖掘找到一个旧的SSRS解决方案,我写了一段时间来记住这一点。有一段时间,我以为密码丢了。这周我将把它输入git。是的,这真的很有帮助,因为在此之前我只能使用CSV值传递一个整数数组,然后需要在SSR中解析它,这不是很酷。。。现在可以了