Rezzie, ваш текущий код эквивалентен:
pendingDeletions = new SQLiteCommand(@"DELETE FROM [centres] WHERE [name] = $name", conn);
foreach (string name in selected)
{
pendingDeletions.Parameters.AddWithValue("$name", centre.Name);
}
pendingDeletions.ExecuteNonQuery();
Это означает, что вы выполняете запрос только один раз, с последним значением в вашем «выбранном» перечислимом.
Это основная причина, по которой я ВСЕГДА ВСЕГДА ВСЕГДА использую разделители блоков в условных выражениях и циклах ВСЕГДА.
Итак, если вы заключили в параметр назначение параметров и выполнение запроса в цикле, то все будет хорошо.
pendingDeletions = new SQLiteCommand(@"DELETE FROM [centres] WHERE [name] = $name", conn);
foreach (string name in selected)
{
pendingDeletions.Parameters.AddWithValue("$name", centre.Name);
pendingDeletions.ExecuteNonQuery();
}