Vous ne pouvez pas (malheureusement) le faire. Un paramètre Sql ne peut être qu'une seule valeur, vous devez donc :
WHERE buildingID IN (@buildingID1, @buildingID2, @buildingID3...)
Ce qui, bien sûr, nécessite que vous connaissiez le nombre d'identifiants de bâtiment ou que vous construisiez dynamiquement la requête.
Comme solution de contournement*, j'ai fait ce qui suit :
WHERE buildingID IN (@buildingID)
command.CommandText = command.CommandText.Replace(
"@buildingID",
string.Join(buildingIDs.Select(b => b.ToString()), ",")
);
qui remplacera le texte de la déclaration par les chiffres, se terminant par quelque chose comme :
WHERE buildingID IN (1,2,3,4)
- Notez que cela se rapproche d'une vulnérabilité d'injection SQL, mais comme il s'agit d'un tableau int, c'est sûr. Les chaînes arbitraires ne sont pas sûr, mais il n'y a aucun moyen d'intégrer des instructions Sql dans un entier (ou datetime, booléen, etc.).