如何返回从C#/ SQL Server环境中的多个多选列表框中挑选的数据

问题描述:

我正在用C#编写报表,并且我的报表有10个多选列表框。我已经在SQL Server中编写了一个存储过程来处理这些数据,但是我已经有了这么多“你不能在'IN'子句”问题中使用参数。换句话说,在SQL Server中你不能写:如何返回从C#/ SQL Server环境中的多个多选列表框中挑选的数据

SELECT * FROM MyTable WHERE MyField IN (@MyParam) 

这是行不通的。所以有人提出了表值参数。显然,您将参数存储在某种临时表中,然后将该临时表用作“IN”子句的基础。

但是,我从来没有见过这样的例子,使用了10次。这是甚至在这一点上的选择?有没有更好的办法?任何人都可以给我一个例子/示例代码,在这样的事情完成?

Use a table valued parameter to send the data to the stored procedure.
您可以使用一个带有10列的参数,每列代表一个列表框,不需要使用10个参数。只要记住在用户定义的表类型中允许空值。

+0

表值参数可以“即时”创建表吗?因为如果20个人同时运行这个报告,我不认为我可以预先设置表格,因为一个用户可能会覆盖另一个。这份报告可能会被超过1000人同时使用。 –

+0

这是一个参数,并发用户数不会影响它。想想它,就像你正在将一个二维数组传递给c#中的函数参数(它基本上是同一件事) - 使用该函数的次数不会影响数组本身... –