Вы не можете передать список как один параметр SQl. Вы могли бы натянуть .Join (',') ГУИДЫ, такие как "0000-0000-0000-0000, 1111-1111-1111-1111", но это было бы высоким из-за накладных расходов базы данных и субоптимальным на самом деле. И вы должны передать всю строку как один составной динамический оператор, вы не можете добавить его в качестве параметра.
Вопрос:
Откуда вы получаете список идентификаторов, представляющих неактивных клиентов?
Мое предложение - подойти к проблеме немного по-другому. Переместите всю эту логику в базу данных, что-то вроде:
Create procedure usp_DeactivateCustomers
@inactive varchar(50) /*or whatever values are required to identify inactive customers*/
AS
UPDATE Customer SET c.Active = 0
FROM Customer c JOIN tableB b ON c.CustomerID = b.CustomerID
WHERE b.someField = @inactive
И вызвать его как хранимую процедуру:
public void InactiveCustomers(string inactive)
{
//...
myAdoCommand.CommandText =
"usp_DeactivateCustomers";
myAdoCommand.Parameters["@inactive"].Value = inactive;
//...
}
Если список GUID существует в базе данных, зачем мне: искать их; поместите их в общий список; раскрутить список в переменную CSV / XML / Table, просто чтобы снова представить их обратно в БД ????? Они уже там! Я что-то упустил?