2011-11-07 9 views
20

मैंने इसकी खोज करने की कोशिश की है लेकिन मेरी स्थिति के अनुकूल उदाहरण नहीं मिल सका।ऑपरेटर में लिंक

मेरे पास ग्राहकों को वापस करने के लिए यह तरीका है। मैं फ़िल्टर करने के लिए कोड की स्ट्रिंग सरणी का उपयोग कैसे कर सकता हूं? इसमें मेरे लिए काम नहीं करता है।

public static List<Customer> GetCustomers(string[] customerCodesArray) 
{ 
    using (busDataContext g = new busDataContext()) 
    { 
     return g.Customers.Where(
      x => x.customerCode.Contains(customerCodesArray)).ToList(); 
    } 
} 
+1

कृपया स्पष्ट करें कि "वास्तव में क्या काम नहीं करता है ... – Didaxis

+0

" काम नहीं करता "से आपका क्या मतलब है? क्या आपको संकलन त्रुटि मिलती है? यदि हां, तो त्रुटि क्या है? या आप रनटाइम त्रुटि प्राप्त करते हैं? यदि हां, तो त्रुटि क्या है? –

+1

["कहां इन" के साथ linq से sql के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/960827/where-in-with-linq-to-sql) – jrummell

उत्तर

31

प्रयास करें निम्नलिखित कोड का प्रयास करें है:

return g.Customers.Where(x => customerCodesArray.Contains(x.customerCode)).ToList(); 
+2

हालांकि तकनीकी रूप से सही है, एसक्यूएल का उपयोग करते समय यह सबसे अच्छा प्रदर्शन समाधान नहीं है। इसके लिए संपूर्ण ग्राहक तालिका स्कैनिंग की आवश्यकता होती है और संभवतः ग्राहक कोड सरणी पर प्रत्येक रिकॉर्ड को लागू करने की आवश्यकता होती है। इसकी जटिलता ओ (एन * एम) बन जाती है। लिंक कनेक्ट स्टेटमेंट का उपयोग करना अधिक व्यावहारिक होगा, इसलिए जेनरेट की गई SQL क्वेरी भी शामिल हो सकती है। –

+0

@TonniTielens जो पूरी तरह से डेटाबेस के सूचकांक पर निर्भर करता है। यह जरूरी नहीं है कि एक स्कैन उत्पन्न हो (और यदि ऐसा होता है, तो कोई भी जुड़ाव बेहतर नहीं होगा)। मेरे अनुभव से, एक अस्थायी तालिका में डालने और केवल शामिल होने पर प्रदर्शन लाभ प्रदान करते हैं जब 'ग्राहक कोड आरे' में हजारों आइटम होते हैं। – Rob

20

आप पीछे की ओर कर रहे हैं:

return g.Customers.Where(x => customerCodesArray.Contains(x.customerCode)).ToList(); 
11

मैं तुम्हें Contains अभिव्यक्ति उल्टा करने के लिए है क्योंकि आप देखने के लिए अगर सरणी ग्राहक कोड, चारों ओर नहीं अन्य तरीके से होता है चाहता हूँ की जरूरत है।

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

return g.Customers.Where(x => customerCodesArray.Contains(x.customerCode)).ToList(); 
3

मुझे लगता है कि यह तुम क्या चाहते

return g.Customers.Where(x => customerCodesArray.Contains(x.customerCode)).ToList(); 
5

return g.Customers.Where(x=>customerCodesArray.Contains(x.CustomerCode)).ToList(); 
संबंधित मुद्दे