Das kann man (leider) nicht. Ein SQL-Parameter kann nur ein einzelner Wert sein, also müssten Sie Folgendes tun:
WHERE buildingID IN (@buildingID1, @buildingID2, @buildingID3...)
Dazu müssen Sie natürlich wissen, wie viele Gebäude-IDs vorhanden sind, oder die Abfrage dynamisch erstellen.
Als Problemumgehung* habe ich Folgendes getan:
WHERE buildingID IN (@buildingID)
command.CommandText = command.CommandText.Replace(
"@buildingID",
string.Join(buildingIDs.Select(b => b.ToString()), ",")
);
Dadurch wird der Text der Anweisung durch die Zahlen ersetzt, was in etwa so endet:
WHERE buildingID IN (1,2,3,4)
- Beachten Sie, dass dies einer Sql-Injection-Schwachstelle nahe kommt, aber da es sich um ein int-Array handelt, ist es sicher. Beliebige Zeichenfolgen sind nicht sicher, aber es gibt keine Möglichkeit, SQL-Anweisungen in eine ganze Zahl (oder datetime, boolean usw.) einzubetten.