// 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个项目后,我得到了错误提示
答案 0 :(得分:0)
如果serialNumbers
是本地列表,那么如果DB.InventoryItems
是可查询的数据库表,则无论如何都行不通。您不能将数据库表与本地集合连接在一起。你不应该那样写。
您应将其编写为:
var ids =
from i in DB.InventoryItems
where serialNumbers.Contains(i.SerialNumber)
select i.id;
如果随后出现有关太多项目的错误,则这是数据库的局限性,因此,如果要使用该数字列表,则必须将该查询分成较小的部分。否则,您将不得不承担传统的foreach循环中本地过滤或强制转换为IEnumerable
的开销。