2012-01-12 13 views
8

मैं एंटिटी फ्रेमवर्क कोड का उपयोग कर रहा हूं। मैं सूची वस्तुओं के खिलाफ डेटाबेस से entites पूछना चाहता हूँ। यह शामिल के साथ ठीक काम करता है, लेकिन मैं इसे StartsWith के साथ कैसे जोड़ सकता हूं?इकाई फ्रेमवर्क 4.1 लिंक शामिल हैं और स्टार्ट्स

List<string> values = new List<string>(); 
values.Add("A"); 
values.Add("B"); 
context.Customer.Where(c => values.Contains(c.Name)).ToList(); 

मैं सभी ग्राहकों को जो ए या बी के साथ शुरू होता खिलाफ कैसे क्वेरी कर सकते हैं:

यह मेरा कोड है?

उत्तर

10

यह स्मृति में काम करना चाहिए, लेकिन मुझे यकीन है कि अगर यह एफई द्वारा एसक्यूएल में अनुवाद किया जा सकता है नहीं कर रहा हूँ:

context.Customer.Where(c => values.Any(s => c.Name.StartsWith(s))).ToList(); 
+0

एफईआई अद्यतन उदास रूप से ef कोर के साथ अद्यतन करता है यह स्थानीय रूप से मूल्यांकन किया जाता है चेतावनी: Microsoft.EntityFrameworkCore.Query [20500 ] LINQ अभिव्यक्ति 'जहां {__texts_0 में स्ट्रिंग टेक्स्ट से [d] .ntry.StartsWith ([text]) का चयन करें [text] => Any()}' का अनुवाद नहीं किया जा सका और स्थानीय रूप से मूल्यांकन किया जाएगा। –

+0

@ एंथनी जोहानस्टन [यह संबंधित हो सकता है] (https://stackoverflow.com/a/44372562/335858) – dasblinkenlight

2

आप StartsWith के साथ गठबंधन करने के लिए के बाद से ही वह, ए या बी के साथ शुरू होता की जरूरत नहीं है तो यह स्पष्ट रूप से एक में शामिल है या बी यह ए या बी के साथ शुरू नहीं कर सकते हैं और नहीं एक या बी

शामिल

तो बस इसके बजाय StartsWith का उपयोग करें।

context.Customer.Where(c => c.StartsWith("A") || c.StartsWith("B")).ToList(); 
+0

मैं स्ट्रिंग का उपयोग नहीं कर रहा हूं।() लेकिन सूची। सामग्री()। आपका समाधान काम करता है लेकिन गतिशील नहीं है। जैसे ए-के खिलाफ पूछताछ – LuckyStrike

+1

@ लकीस्ट्राइक - मैं सुझाव दूंगा कि यदि आपके पास ऐसी आवश्यकताएं हैं, तो आप उन्हें अपने प्रश्न में शामिल कर सकते हैं। अन्यथा आप उन समाधानों को अस्वीकार कर हर समय बर्बाद कर सकते हैं जिन्हें वे नहीं जानते थे जो आप खोज रहे थे। –

0

संभव है कि आप दो कार्य इस तरह से संयोजन की कोशिश:

IQueryable<Customer> result = (from C in context.Customerwhere C.Name.StartsWith("B") && values.Contains(C.Name)); 
+0

आप 'संदर्भ' में सी से एक स्थान खो रहे हैं। ग्राहक 'जहां यह 'संदर्भ में सी से होना चाहिए। ग्राहक जहां' –

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