मेरे पास एक तरीका है कि 'SQL के लिए कोई अनुवाद नहीं है' जिसे मैं एक IQueryable पर निष्पादित करना चाहता हूं, क्या IQueryable को कुछ इंटरमीडिएट क्लास में स्टोर किए बिना निष्पादित करने के लिए मजबूर करने का कोई तरीका है?निष्पादित करने के लिए एक IQueryable बल?
उत्तर
क्या समस्या है कि आप डेटाबेस में स्थानीय स्थान पर स्थानीय रूप से निष्पादित करना चाहते हैं? यदि ऐसा है, तो AsEnumerable
आपका मित्र है। यह एक बहुत ही सरल तरीका है, कुछ की तरह:
public IEnumerable<T> AsEnumerable(IEnumerable<T> source)
{
return source;
}
महत्वपूर्ण बात यह है कि यह नहीं बल्कि IQueryable<T>
से परिणाम IEnumerable<T>
का संकलन समय प्रकार है, जो किसी भी LINQ क्वेरी ऑपरेटर आपको बाद कि LINQ हो जाएगा फोन का मतलब है बनाता है LINQ से SQL के बजाय ऑब्जेक्ट्स के लिए।
उदाहरण के लिए:
var query = context.Employees
// Filtering performed in SQL
.Where(emp => emp.IsFullTime)
.AsEnumerable()
// Projection performed locally; ComputeSalary has no
// SQL equivalent
.Select(emp => new { Employee = emp,
Salary = ComputeSalary(emp) });
आप ToList
कह सकते हैं के रूप में कहीं और सुझाव दिया, लेकिन अगर आप को छानने कर रहे हैं और वास्तव में नहीं है स्मृति में पूर्ण सूची की जरूरत है, AsEnumerable
और छानने कि बुला परिणाम पहले सब कुछ लोड करने से अधिक कुशल होगा।
क्या यह तकनीक लिंक से ईएफ के साथ भी है? ऐसा प्रतीत नहीं होता है। – neontapir
मुझे समझ में नहीं आता कि 'डेटाबेस के बजाय स्थानीय रूप से निष्पादित' का अर्थ क्या है। मेरे जैसे लोगों के लिए: IQueryable
@Tymek: हाँ, जो दो SQL क्वेरी निष्पादित करता है। लेकिन "स्थानीय रूप से निष्पादित" से मेरा मतलब है "डेटाबेस से अब तक सभी परिणामों को क्वेरी में लाएं, लेकिन फिर शेष क्वेरी को स्मृति में करें" - ताकि आप फ़िल्टरिंग, अनुमान आदि कर सकें जो SQL में लागू नहीं हैं। –
List<Employees> myEmployees = myqueryable.ToList();
और फिर आपको लगता है कि सूची पर अपने LINQ सामान कर सकते हैं।
आपको यह संदेश मिलता है जब आपने एक प्रश्न लिखा है कि LinqToSql को SQL में अनुवाद करने का तरीका नहीं पता है (जो यह भी कहता है)।
मुझे यकीन है कि मैं तुम्हें वास्तव में क्या कह रहे हैं, लेकिन नहीं कर रहा हूँ के रूप में जहाँ तक मैं देख, आप निम्नलिखित विकल्प हैं:
- आपकी क्वेरी पुनः लिखें, ताकि LinqToSql कर सकते हैं का अनुवाद यह
- के रूप में कार्य करें क्वेरी के ज्यादा के रूप में आप SQL सर्वर पर है, तो स्मृति में आराम कर सकते हैं (वस्तुओं के लिए LINQ का उपयोग करके)
- सिट नीचे और रोना
मान लिया जाये कि हम # 3 से इनकार, दूसरे की 2 को देखो उदाहरण।
इसे पुनर्लेखन - इसके साथ मदद करने के लिए, हमें आपकी linq क्वेरी की आवश्यकता है।
यहां आप उस भाग को बाहर लेते हैं जिसका प्रारंभिक क्वेरी से अनुवाद नहीं किया जा सकता है, फिर अपने Iqueryable कॉल ToList पर, और उसके बाद उस सूची में शेष क्वेरी लागू करें।
और क्या आप इसे स्टोर किए बिना क्वेरी निष्पादित कर सकते हैं? खैर, वास्तव में, आप हमेशा परिणामों के माध्यम से लूप कर सकते हैं और इस तरह इसे एक चर में स्टोर नहीं करते हैं, लेकिन स्पष्ट रूप से क्वेरी के परिणामों को कहीं भी संग्रहीत करने की आवश्यकता है।
किसी को रोने के लिए बैठने की आवश्यकता नहीं है। – mayu
बहुत सच है - हालांकि मुझे लगता है कि खड़े होने पर कोई भी व्यक्ति रोना नहीं चाहिए। अगर आपको रोना है, तो आपको इसे ठीक से करने की ज़रूरत है। – kastermester
- 1. बल जावास्क्रिप्ट EventListener एक बार निष्पादित करने के लिए?
- 2. एक IQueryable
- 3. अज्ञात प्रकारों के लिए IQueryable
- 4. अप्रयुक्त साझा लाइब्रेरी के खिलाफ लिंक करने के लिए बल
- 5. IQueryable
- 6. IQueryable
- 7. एक IQueryable संग्रह
- 8. उन्नयन के बिना एक ऐप निष्पादित करने के लिए कैसे?
- 9. IQueryable
- 10. संदेशबॉक्स को प्रोग्रामेटिक रूप से बंद करने के लिए बल
- 11. IQueryable
- 12. एकाधिक इंस्टॉलेशन निष्पादित करने के लिए इंस्टॉलर
- 13. जेपीक्यूएल क्वेरीज़ निष्पादित करने के लिए टूल?
- 14. एक बड़ी PHP स्क्रिप्ट निष्पादित करने के लिए कैसे?
- 15. एक चर में संग्रहीत आदेश निष्पादित करने के लिए कैसे?
- 16. एसक्यूएल/सी # - एक प्रश्न निष्पादित करने के लिए सर्वोत्तम विधि
- 17. एक ही पंक्ति में एकाधिक कमांड निष्पादित करने के लिए
- 18. LINQ के साथ एक अलग IQueryable लौटने?
- 19. IQueryable को IEQuery से कनवर्ट करने में क्वेरी को फिर से निष्पादित करता है?
- 20. कमांड ट्रिगर होने पर अद्यतन करने के लिए बाध्यकारी बल
- 21. पायथन बिक्री बल पुस्तकालय बिक्री बल डेटा प्राप्त करने के लिए?
- 22. एक एरलंग खोल से निष्पादित करने के लिए एक फ़ंक्शन को मापने के लिए कैसे करें?
- 23. छवियों को कैश करने के लिए बल ब्राउज़र
- 24. एक बिक्री बल आईडी
- 25. एक IQueryable क्वेरी का हिस्सा निष्पादित करना और बाकी को ऑब्जेक्ट्स
- 26. विरासत वर्गों में एक स्थिर कार्य को पुन: कार्यान्वित करने के लिए बल
- 27. IQueryable ओवर डब्ल्यूसीएफ सेवा
- 28. एक एमएसआई पैकेज डाउनलोड करने के लिए एक WiX बूटस्ट्रैपर को कैसे बल दें?
- 29. एक IQueryable <T> सूची <T> पर कनवर्ट करने के लिए कैसे करें?
- 30. IQueryable C#
यह एक अंधा अनुमान है, लेकिन यदि स्ट्रिंग। IsNullOrEmpty अपराधी है तो इसके बजाय खंड 2 का उपयोग करें: जहां (o => o.Name! = Null)। जहां (o => o.Name.Length> 0) । – mayu