Не можете (за съжаление) да направите това. Sql параметърът може да бъде само една стойност, така че трябва да направите:
WHERE buildingID IN (@buildingID1, @buildingID2, @buildingID3...)
Което, разбира се, изисква да знаете колко идентификатори на сгради има или да конструирате динамично заявката.
Като заобиколно решение* направих следното:
WHERE buildingID IN (@buildingID)
command.CommandText = command.CommandText.Replace(
"@buildingID",
string.Join(buildingIDs.Select(b => b.ToString()), ",")
);
което ще замени текста на изявлението с числата, завършвайки като нещо като:
WHERE buildingID IN (1,2,3,4)
- Обърнете внимание, че това се доближава до уязвимост при инжектиране на Sql, но тъй като е int масив, е безопасно. Произволните низове не безопасно, но няма начин за вграждане на Sql изрази в цяло число (или дата, час, булева и т.н.).