Я не уверен, что это возможно, используя только Linq to SQL.Я думаю, что вам нужно иметь хранимую процедуру или функцию, написанную на сервере, которая позволит вам передать строку с разделителями, представляющую ваш список, и проанализировать возвращающую таблицу, с которой вы затем сможете сравнить.
IПодумайте, что самый простой способ сделать это - написать (или попросить вашего администратора баз данных) все это как хранимую процедуру, которая все равно должна будет принимать ваш список в качестве строки для своего аргумента, вызывая вышеупомянутую функцию сплиттера.Хранимая процедура будет иметь свой план выполнения, предварительно скомпилированный сервером.
Вы можете легко превратить ваш список в строку, используя Linq, с чем-то вроде
string[] strings = new string[4] { "1", "2", "3", "4" };
string listOfStrings = strings.Aggregate((acc, s) => acc = acc + ", " + s);
Вы можете превратить список в любоеможно преобразовать в строку в IEnumerable из строк с помощью
IEnumerable<string> strings = list.Cast<string>();
Затем вы можете добавить свою хранимую процедуру в файл dbml и вызвать ее с помощью Linq to SQL.
Кажется, я помню, чтоLinq to SQL, чтобы оставаться общим, не обрабатывает списки вещей и преобразует все передаваемые списки в параметр для каждой записи в списке.