如何在LINQ to SQL中发送大型过滤器列表

时间:2012-02-06 12:56:50

标签: c# .net linq list

我有一个非常大的表格,我希望通过Id获取某些行。为了保存数据,我需要发送一个ID列表,最多可以有几千个。我已经尝试过通过逗号分隔的字符串将id发送到存储过程的方法,但是将字符串转换回可选列表需要几分钟。 现在我尝试在视图上使用Contains,但我总是得到一个错误,我使用了太多参数。

有解决问题的最佳方法吗?提前谢谢 - 希望你知道我的意思。

2 个答案:

答案 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。