To (bohužel) nemůžete. Parametr SQL může být pouze jedna hodnota, takže byste museli:
WHERE buildingID IN (@buildingID1, @buildingID2, @buildingID3...)
Což samozřejmě vyžaduje, abyste věděli, kolik ID budov existuje, nebo abyste dotaz dynamicky sestavili.
Jako řešení* jsem provedl následující:
WHERE buildingID IN (@buildingID)
command.CommandText = command.CommandText.Replace(
"@buildingID",
string.Join(buildingIDs.Select(b => b.ToString()), ",")
);
který nahradí text příkazu čísly a skončí jako:
WHERE buildingID IN (1,2,3,4)
- Všimněte si, že se to blíží zranitelnosti vkládání SQL, ale protože se jedná o pole int, je to bezpečné. Libovolné řetězce nejsou bezpečné, ale neexistuje způsob, jak vložit příkazy SQL do celého čísla (nebo data a času, boolean atd.).