Dat kun je (helaas) niet. Een Sql-parameter kan maar een enkele waarde zijn, dus u moet het volgende doen:
WHERE buildingID IN (@buildingID1, @buildingID2, @buildingID3...)
Wat natuurlijk vereist dat je weet hoeveel gebouw-ID's er zijn, of om de query dynamisch te construeren.
Als tijdelijke oplossing* heb ik het volgende gedaan:
WHERE buildingID IN (@buildingID)
command.CommandText = command.CommandText.Replace(
"@buildingID",
string.Join(buildingIDs.Select(b => b.ToString()), ",")
);
die de tekst van de verklaring zal vervangen door de cijfers, eindigend als zoiets als:
WHERE buildingID IN (1,2,3,4)
- Merk op dat dit in de buurt komt van een Sql-injectiekwetsbaarheid, maar aangezien het een int-array is, is het veilig. Willekeurige strings zijn niet veilig, maar er is geen manier om Sql-instructies in een geheel getal (of datetime, boolean, enz.) in te sluiten.