Non puoi (purtroppo) farlo. Un parametro Sql può essere solo un singolo valore, quindi dovresti fare:
WHERE buildingID IN (@buildingID1, @buildingID2, @buildingID3...)
Il che, ovviamente, richiede di sapere quanti ID edificio ci sono o di costruire dinamicamente la query.
Come soluzione alternativa*, ho eseguito quanto segue:
WHERE buildingID IN (@buildingID)
command.CommandText = command.CommandText.Replace(
"@buildingID",
string.Join(buildingIDs.Select(b => b.ToString()), ",")
);
che sostituirà il testo della dichiarazione con i numeri, finendo come qualcosa del tipo:
WHERE buildingID IN (1,2,3,4)
- Nota che questo si sta avvicinando a una vulnerabilità di iniezione Sql, ma poiché si tratta di un array int è sicuro. Le stringhe arbitrarie non sicuro, ma non c'è modo di incorporare istruzioni Sql in un numero intero (o datetime, booleano, ecc.).