c# - 传入请求的参数过多。服务器最多支持2100个参数

标签 c# linq

我有一个看似简单的 linq-to-sql 查询,它在多个列中搜索一些数据;像这样:

List<long> TheTableIDs = list of IDs (sometimes more than 2100)

var QueryOutput = (from x in TheDataContext.SomeTable

                   where TheTableIDs.Contains(x.ID) &&
                   
                   x.Col1.Contains(SomeString) || 
                   x.Col2.Contains(SomeString))

                   select x.ID).ToList();

我得到的错误是这样的:

Additional information: The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.

解决这个问题的最佳方法是什么?

我环顾四周,发现的解决方案如下所示:

var QueryOutput = TheDataContext.SomeTable.AsEnumerable()

        .Join(TheTableIDs, x => x.LeadID, ci => ci, (x, ci) => x)

        .Where(x => SomeString.Contains(x.Col1) == true ||
                    SomeString.Contains(x.Col2) == true)
        
        .Select(x => x.ID).ToList();

这会编译并且不会抛出任何异常,但似乎忽略了带有 SomeString.ContainsWhere 子句

使该查询有效的解决方案是什么?

最佳答案

很简单 - 只要 TheTAbleID 包含的 ID 少于 2100 个 - 这样做是不合法的。

将表切成 2000 个 block ,然后分别查询每个 block ,可能在多个线程中。

关于c# - 传入请求的参数过多。服务器最多支持2100个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23045912/

相关文章:

c# - Json.NET 不在对象的列表或字典中保留原始类型信息。有解决方法吗?

c# - XAML 中没有智能感知

c# - DataRow 上的复杂 LINQ

c# - 如何从 List() 中获取整数值的运行总计?

linq - 无法使用 LINQ 语法编译我的项目

javascript - Visual Studio 2015 导航 MVC

c# - EF System.MissingMethodException

c# - C#继承和链接问题

c# - Dictionary.FirstOrDefault() 如何确定是否找到结果

C# - 从两个枚举中获取可能的对