2012-04-20 14 views
7

में साफ-सुथरी है, तो निम्न का उपयोग करना Incorrect syntax near ',' फेंकता है।डैप्पर और स्थिति

const string sql = 
    "select * from ZipToZipDistance z where z.NoRouteFound = 0" + 
    " and z.OriginZip in (@zips) or z.DestZip in (@zips)"; 
var zipStrings = zips.Select(x => x.ToString()).ToArray(); 
var result = connection.Query<ZipToZipDistance>(sql, 
    new { zips = zipStrings }); 

हम्म, एसक्यूएल में कोई अल्पविराम नहीं है। यह पैरामीटर के साथ कुछ करने के लिए होना चाहिए। OriginZip और DestZipvarchar(10) हैं। zipsIEnumerable<int> है। मैंने स्ट्रिंग्स में कनवर्ट किए बिना पैरामीटर के रूप में zips का उपयोग करने का प्रयास किया। वही त्रुटि

बहुत सरल लगता है। मैं क्या गलत कर रहा हूं?

+1

@zips – jaxxbo

+0

एक ही समस्या थी अभी से कोष्ठक निकालें और मैं सिर्फ @zips आसपास कोष्ठक/कोष्ठक हटा दिया। बस iike jaxxbo कहते हैं। –

उत्तर

7

कोशिश:

const string sql = 
const string sql = 
    "select * from ZipToZipDistance z where z.NoRouteFound = 0" + 
    " and z.OriginZip in @zips or z.DestZip in @zips"; 
var zipStrings = zips.Select(x => x.ToString()); 
var result = connection.Query<ZipToZipDistance>(sql, 
    new { zips = zipStrings }); 
+0

सैम जिस समस्या में मैं दौड़ रहा हूं वह यह है कि मैं केवल इन क्लॉज में 2100 आइटम पास कर सकता हूं जो एक डैपर सीमा प्रतीत होता है क्योंकि जब मैं स्ट्रिंग कॉन्सटेनेशन का उपयोग कर क्वेरी बनाता हूं तो यह ठीक काम करता है। यहाँ मैं क्या मतलब है: कार्य कोड: वर क्वेरी = @ "(+ idsCsvString +") "QuestionTags से कहां QuestionID में चुनिंदा *"; var परिणाम = conn.Query (क्वेरी) .सूची(); – Marko

+0

जब मैंने इसे जिस तरह से आप सुझाव दे रहे हैं मैं निम्न त्रुटि मिलता है: भेजे तालिका डेटा स्ट्रीम (टीडीएस) दूरस्थ प्रक्रिया कॉल (RPC) प्रोटोकॉल धारा गलत है। इस आरपीसी अनुरोध में बहुत सारे पैरामीटर प्रदान किए गए थे। अधिकतम 2100 है – Marko

संबंधित मुद्दे