为什么这个 linq SQL 查询的错误嵌套太深?

Why am I getting error nested too deeply for this linq SQL query?

// Note serialNumbers is a List<string 
var ids = (from i in DB.InventoryItems
           join s in serialNumbers on i.SerialNumber equals s
           select i.id);
return string.Join(",", ids);

serialNumbers变量是一个字符串类型的列表。此 serialNumbers 列表

中包含大约 100 个项目后我收到错误消息

如果 serialNumbers 是一个本地列表,如果 DB.InventoryItems 是一个可查询的数据库 table,那无论如何都行不通。您不能将数据库 table 与本地集合连接起来。你不应该那样写。

你应该写成:

var ids =
    from i in DB.InventoryItems
    where serialNumbers.Contains(i.SerialNumber)
    select i.id;

如果您随后收到关于太多项目的错误,那是您的数据库的限制,因此如果您想使用该数字列表,您必须将该查询分成更小的部分。否则,您将不得不承担在传统的 foreach 循环中进行本地过滤或强制转换为 IEnumerable.

的成本