Linq to SQL - хорошо , но не магия ! Тем не менее, он должен сократить ваш запрос до исполняемого SQL (именно поэтому такие функции, как string.Split
, запрещены - они затрудняют генерацию эквивалентного SQL). В этом случае вы запрашиваете что-то, что просто не может быть сделано сервером SQL (поиск по содержимому поля, разделенного запятыми).
Если вы хотите, чтобы это работало так, как я думаю, вы ожидаете, то вам нужно изменить схему базы данных так, чтобы Machines
имела свою собственную таблицу и могла эффективно индексироваться и запрашиваться.
В качестве альтернативы вы можете получить всю таблицу / набор результатов, используя Linq to SQL, а затем использовать старый добрый Linq to Objects для выполнения тяжелой работы:
IEnumerable<string> producttmp = from product in productInfo.AsEnumerable()
let machines = product.Machines.Split(',')
from machine in machines
where machine == machName
select product.Reference;
(не проверено)