Det kan man (tyvärr) inte göra. En SQL-parameter kan bara vara ett enda värde, så du måste göra:
WHERE buildingID IN (@buildingID1, @buildingID2, @buildingID3...)
Vilket naturligtvis kräver att du vet hur många byggnads-ID det finns, eller att du dynamiskt konstruerar frågan.
Som en lösning* har jag gjort följande:
WHERE buildingID IN (@buildingID)
command.CommandText = command.CommandText.Replace(
"@buildingID",
string.Join(buildingIDs.Select(b => b.ToString()), ",")
);
som kommer att ersätta texten i påståendet med siffrorna, vilket slutar som något i stil med:
WHERE buildingID IN (1,2,3,4)
- Observera att detta närmar sig en SQL-injektionssårbarhet, men eftersom det är en int-array är det säkert. Godtyckliga strängar är inte säkert, men det finns inget sätt att bädda in Sql-satser i ett heltal (eller datetime, boolean, etc).