Если serialNumbers
- это локальный список, это не сработает, если DB.InventoryItems
- это запрашиваемая таблица базы данных. Вы не можете объединить таблицы базы данных с локальными коллекциями. Тебе не следует так писать.
Вы должны написать это как:
var ids =
from i in DB.InventoryItems
where serialNumbers.Contains(i.SerialNumber)
select i.id;
Если вы получаете эту ошибку о слишком большом количестве элементов, это ограничение вашей базы данных, поэтому вам придется разбить этот запрос на более мелкие части, если вы хотите использовать этот список номеров. В противном случае вам придется съесть расходы на локальную фильтрацию в традиционном цикле foreach или привести к IEnumerable
.