बड़ा विषय प्रश्न: मैं अक्सर ऑब्जेक्ट्स के एक सेट को फ़िल्टर करने के लिए LINQ का उपयोग करके खुद को ढूंढता हूं और फिर, क्वेरी के बाद, प्रत्येक परिणाम पर एक क्रिया करने के लिए एक पुरानी फैशन फोरच कर रहा हूं। क्या इन दो कार्यों को संयोजित करने का कोई अच्छा तरीका है कि प्रत्येक ऑब्जेक्ट पर एक क्रिया की जाती है जो कहां से() भविष्यवाणी करता है? लगभग चयन में एक क्रिया पारित करने की तरह()। शायद यह संकलित नहीं होगा, लेकिन एक फनक में गुजरने के बारे में क्या है जो एक बूल देता है, तो आप घोंसला कर सकते हैं कि किसी अन्य क्वेरी के अंदर जो असफलताओं या सफलताओं के साथ कुछ कर सकता है। क्या किसी ने इसे उत्पादन कोड में किया है? क्या यह बुरा अभ्यास माना जाएगा? कोई अन्य विचार?क्या LINQ का उपयोग करने के लिए LINQ का उपयोग करना और केवल डेटा चुनने के बजाय क्रियाएं करना बुरा व्यवहार है?
उत्तर
List<T>
में ForEach()
विधि है जो इसके लिए डिज़ाइन की गई है।
आप IEnumerable पर ForEach विधि को एक एक्सटेंशन लागू कर सकते हैं।
बहुत से लोग एक ForEach
विधि के लिए कहा है - और वास्तव में यह उपयोगी है (जो कारण है कि हम MoreLINQ में एक मिल गया है)। यह भी संभावित खतरनाक है।
अधिकांश LINQ दृढ़ता से दुष्प्रभावों को हतोत्साहित करता है। वे संभव हैं, लेकिन निराश हैं। यही कारण है कि ऑर्डरबी आदि मौजूदा लोगों को सॉर्ट करने के बजाय नए संग्रह लौटाते हैं।
अब ForEach
पर विचार करें - यह एक फ़ंक्शन के बजाय "कार्रवाई" है, जिसमें यह कुछ भी वापस नहीं करता है। यदि इसका कोई दुष्प्रभाव नहीं है, तो यह बिल्कुल व्यर्थ है! तो, यह LINQ के दर्शन के हिस्से के खिलाफ चला जाता है - यह मूल रूप से एक कार्यात्मक शैली में चीजों के करीब नहीं आ रहा है।
मैं वास्तव में या उसके खिलाफ मामला बनाने की कोशिश नहीं कर रहा हूं, वास्तव में, मुझे लगता है कि एक उपयोगी बात है, और मुझे आश्चर्य नहीं है कि यह में कई पुस्तकालयों आदि है। यह एक बहुत स्पष्ट है जोड़ने के लिए छद्म ऑपरेटर। बस आप जो कर रहे हैं उसके बारे में सोचें, और इस तथ्य को ध्यान दें कि आप साइड इफेक्ट्स पेश कर रहे हैं। यह LINQ की कार्यात्मक शैली और कोडिंग की एक और अनिवार्य शैली के बीच एक सीमा है।
मुझे अभी तक MoreLINQ के बारे में पता नहीं था। अब इसका संदर्भ दिया गया है, और आपके होमग्राउन के बजाय आपके फॉरएच का उपयोग किया जाता है। Thanx! –
इस बारे में महान स्पष्टीकरण कि यह IENumerable
- 1. LINQ का उपयोग करना संस्थाओं
- 2. क्या छुपे हुए क्षेत्रों का उपयोग करना बुरा व्यवहार है?
- 3. प्रतीकों के बजाय तारों का उपयोग करना: अच्छा या बुरा?
- 4. एक सदस्य का उपयोग लैम्ब्डा अभिव्यक्ति का उपयोग करना LINQ से SQL भविष्यवाणी करने के लिए पैरामीटरेट करने के लिए
- 5. क्या मुझे LINQ से SQL का उपयोग शुरू करना चाहिए?
- 6. हाइबरनेट डेटाबेस के माइग्रेशन के लिए DiscriminatorFormula का उपयोग करना बुरा व्यवहार है?
- 7. क्या PHP के अंदर एचटीएमएल का उपयोग करना बुरा है?
- 8. केवल चाबियाँ स्टोर करने के लिए हैशटेबल का उपयोग करना?
- 9. किसी ऑब्जेक्ट के लिए LINQ का उपयोग करना जिसमें केवल GetEnumerator()
- 10. ऑब्जेक्ट्स की सूची मर्ज करने के लिए LINQ का उपयोग
- 11. लूप को प्रतिस्थापित करने के लिए LINQ का उपयोग करना बुद्धिमानी है?
- 12. LINQ में FirstOrDefault के बजाय पहले का उपयोग क्यों करें?
- 13. क्या PHP में ऑटोलोडिंग का उपयोग करना बुरा है?
- 14. LINQ का उपयोग करने के लिए सूची <T>
- 15. क्या क्लास लेवल वैरिएबल पर उपयोग कथन का उपयोग करना बुरा व्यवहार है?
- 16. क्या MySQL तालिका में बुलियन फ़ील्ड के बजाय enum ('y', 'n') का उपयोग करना बुरा है?
- 17. क्या जावा में किसी सरणी को इंडेक्स करने के लिए एनम के सामान्य मूल्य का उपयोग करना बुरा व्यवहार है?
- 18. LINQ का उपयोग करना मैं एक "गणना क्षेत्र"
- 19. '==' जावा स्ट्रिंग्स के लिए .equals के बजाय का उपयोग करना
- 20. क्या एएसपी.NET के साथ PLINQ का उपयोग करना उचित है?
- 21. क्या मुझे MySQL के बजाय NoSQL का उपयोग करना चाहिए?
- 22. अपवाद का उपयोग करना। डेटा
- 23. किसी सूची को CSV स्ट्रिंग में कनवर्ट करने के लिए LINQ का उपयोग करना
- 24. ऑब्जेक्ट्स के लिए LINQ का उपयोग करना और एक विशिष्ट संपत्ति को छोड़कर
- 25. क्या लाइब्रेरी फ़ंक्शन का उपयोग किए जाने पर सिस्टम() फ़ंक्शन का उपयोग करना बुरा व्यवहार है? क्यूं कर?
- 26. का उपयोग कर Linq करने वाली एसक्यूएल
- 27. क्या LINQ से SQL के साथ स्केलर फ़ंक्शंस का उपयोग/एक्सेस करना संभव है?
- 28. क्या अनावश्यक संबंधों का उपयोग करना बुरा है?
- 29. LINQ - C# - लैम्ब्डा का उपयोग करना - संग्रह से डेटा का एक सेट प्राप्त करें
- 30. क्या प्रश्नों में $ _SESSION ['id'] का उपयोग करना बुरा है?
मैंने अपनी खुद की विस्तार विधि को प्रत्येक() को IENumerable पर जोड़ा है जो वही करता है। –