Bạn không thể (không may) làm điều đó. Tham số Sql chỉ có thể là một giá trị duy nhất, vì vậy bạn phải làm:
WHERE buildingID IN (@buildingID1, @buildingID2, @buildingID3...)
Tất nhiên, điều này yêu cầu bạn biết có bao nhiêu id xây dựng hoặc để tạo động truy vấn.
Để giải quyết vấn đề *, tôi đã thực hiện như sau:
WHERE buildingID IN (@buildingID)
command.CommandText = command.CommandText.Replace(
"@buildingID",
string.Join(buildingIDs.Select(b => b.ToString()), ",")
);
sẽ thay thế văn bản của câu lệnh bằng các số, kết thúc như sau:
WHERE buildingID IN (1,2,3,4)
- Lưu ý rằng điều này đang tiến gần đến lỗ hổng Sql injection, nhưng vì nó là một mảng int an toàn. Các chuỗi tùy ý là không an toàn, nhưng không có cách nào để nhúng các câu lệnh Sql vào một số nguyên (hoặc datetime, boolean, v.v.).