2009-03-09 9 views
13

"विधि 'बूलियन युक्त (System.String)' के लिए कोई समर्थित अनुवाद नहीं है। SQL के लिए कोई समर्थित अनुवाद नहीं है।"विधि 'बूलियन युक्त (System.String)' में SQL

क्वेरी IsQueryable है, लेकिन यह काम करना बंद कर:

foreach (string s in collection1) 
{ 
     if (s.Length > 0) 
       { 
        query = query.Where(m => m.collection2.Contains(s)); 

       } 
} 

अद्यतन: यह काम करता है जब मैं क्वेरी "IEnumerable" के बदले iqueryable बनाते हैं। लूप के माध्यम से पुनरावृत्ति के बजाय linq का उपयोग कर एक ही परिणाम प्राप्त करने का तरीका क्या होगा?

+0

आप पोस्ट कर सकते हैं क्या आपकी क्वेरी से पहले ही इस पाश में चला जाता है? –

+0

शुद्ध LINQ का उपयोग करना कोई चीज़ नहीं बदलता है - यह भी एक ही समस्या है। अज्ञात कारण के लिए, यदि LINQ "अजीब" संग्रह को हैशसेट के रूप में पहचानता है तो यह इसे आईनेमरेबल के रूप में उपयोग नहीं करता है, उपयोगकर्ता को अपने संग्रह को सीधे आईएनमेर्यूबल में परिवर्तित करना होता है - फिर सामग्री का सही ढंग से एसक्यूएल में अनुवाद किया जाता है (मुझे लगता है)। – greenoldman

उत्तर

0

ऐसा लगता है कि आप जो संग्रह देख रहे हैं वह संग्रह संग्रह से आ रहा है 2. क्या आपने m.collection2 को किसी अन्य फ़ंक्शन में लपेटने की कोशिश की है जो सच या गलत हो? क्या यह LINQ वाक्यविन्यास है?

2

स्टैक ओवरफ्लो से इस answer पर एक नज़र डालें।

यह है, जिसके परिणामस्वरूप क्वेरी कुछ है कि डेटाबेस तक पहुँचने का कोई तरीका नहीं है के लिए उपयोग की आवश्यकता होगी की तरह लग रहा है क्योंकि जानकारी स्मृति में है।

+0

फिर भी स्मृति में डेटा को किसी भी अन्य क्वेरी के रूप में SQL सर्वर में स्थानांतरित किया जा सकता है। इसमें आईएन में अनुवाद किया जाना चाहिए। – greenoldman

1

चूंकि m.collection2 डेटाबेस में है, तो कंटेनर का उपयोग न करें। उपयोग किसी भी

m.collection2.Any(x => x == s) 
21

इस प्रयास करें:

query = query.Where(m => m.collection2.ToList().Contains(s)); 
             ^^^^^^^^ 
+2

+1 - ऐसा लगता है कि SQL 'SQL' उत्पन्न करने के लिए LINQ से SQL प्राप्त करने के लिए, * संकलन समय * आपके संग्रह का प्रकार * सूची * होना चाहिए। मेरे परीक्षणों में, मेरे पास सूची का एक उदाहरण था, लेकिन क्वेरी ने इसे IList के रूप में देखा और मुझे प्रश्न में उल्लिखित त्रुटि मिली। हालांकि, यह सुनिश्चित करना कि क्वेरी ने इसे संकलित समय पर सूची के रूप में देखा है। –

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