आप (दुर्भाग्य से) ऐसा नहीं कर सकते। एक Sql Parameter केवल एक ही मान हो सकता है, इसलिए आपको यह करना होगा:
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 कथनों को एक पूर्णांक (या डेटाटाइम, बूलियन, आदि) में एम्बेड करने का कोई तरीका नहीं है।