如何在LINQ to SQL中发送大型筛选器列表

本文关键字:大型 筛选 列表 LINQ to SQL | 更新日期: 2023-09-27 18:22:34

我有一个相当大的表,我想在其中按Id获取某些行。为了保存数据,我需要发送一个Id列表,最多可以有几千个。我尝试过通过命令操作的字符串将ID发送到存储过程,但将字符串转换回可选择列表需要几分钟时间。现在我已经尝试在视图上使用Contains,但我总是收到一个错误,即我使用了太多参数。

有没有最好的方法来解决我的问题?提前谢谢——希望你明白我的意思。

如何在LINQ to SQL中发送大型筛选器列表

使用直接C#和SQL,可以使用表值参数-这是将内存中的表传递给存储过程的一种方式。

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

希望能有所帮助。

使用Contains()时达到2100参数限制(SQL Server)

不如这样(将其分批处理成可管理的部分)。这个其他(非LINQ)选项包括CSV和"拆分"UDF,以及表值参数(在SQL2008中)。

在发布问题之前,请搜索SO。