Могу ли я передать список в SqlCommand в качестве параметра?
УДАЛИТЬ ИЗ MyTable ГДЕ Ключ В @MyParam
command.Parameters.AddValue ("MyParam", MyList);
Я понимаю, что могу просто перебрать список, но я искал более чистое решение.
Нет, в текущей форме нельзя
Есть несколько вариантов использования UDF, XML или динамического SQL для передачи списков.
Самая полная статья о том, как это сделать: «Массивы и списки в SQL Server 2005 и последующих версиях» Эрланд Соммарског
Передайте их как параметр типа таблицы,
CREATE TYPE dbo.CategoryTableType AS TABLE
( CategoryID int )
затем употребите его в своей процедуре
CREATE PROCEDURE usp_UpdateCategories
(@tvpNewCategories dbo.CategoryTableType READONLY)
и делать что-то вроде
delete from dbo.Categories where id in (select CategoryID from @tvpNewCategories) ;