Anda tidak bisa (sayangnya) melakukan itu. Parameter Sql hanya dapat berupa nilai tunggal, jadi Anda harus melakukan:
WHERE buildingID IN (@buildingID1, @buildingID2, @buildingID3...)
Yang, tentu saja, mengharuskan Anda mengetahui berapa banyak ID bangunan yang ada, atau untuk membuat kueri secara dinamis.
Sebagai solusinya*, saya telah melakukan hal berikut:
WHERE buildingID IN (@buildingID)
command.CommandText = command.CommandText.Replace(
"@buildingID",
string.Join(buildingIDs.Select(b => b.ToString()), ",")
);
yang akan menggantikan teks pernyataan dengan angka, berakhir seperti:
WHERE buildingID IN (1,2,3,4)
- Perhatikan bahwa ini mendekati kerentanan injeksi Sql, tetapi karena ini adalah int array yang aman. String arbitrer bukan aman, tetapi tidak ada cara untuk menyematkan pernyataan Sql dalam bilangan bulat (atau datetime, boolean, dll).