我有一个非常大的表格,我希望通过Id获取某些行。为了保存数据,我需要发送一个ID列表,最多可以有几千个。我已经尝试过通过逗号分隔的字符串将id发送到存储过程的方法,但是将字符串转换回可选列表需要几分钟。 现在我尝试在视图上使用Contains,但我总是得到一个错误,我使用了太多参数。
有解决问题的最佳方法吗?提前谢谢 - 希望你知道我的意思。
答案 0 :(得分:2)
使用直接C#和SQL,您可以使用表值参数 - 这是一种将内存表传递给sproc的方法。
http://msdn.microsoft.com/en-us/library/bb675163.aspx
我不相信Linq支持它。但是,我发现这篇关于通过Linq使用TVP的文章有一个解决方法(还没试过):
http://blog.mikecouturier.com/2010/01/sql-2008-tvp-table-valued-parameters.html
希望有所帮助。
答案 1 :(得分:1)
来自Hitting the 2100 parameter limit (SQL Server) when using Contains()
like so(将其分为可管理的部分)怎么样?该 其他(非LINQ)选项涉及CSV和“拆分”UDF,以及 表值参数(在SQL2008中)。
请在发布问题之前搜索SO。