linq - Using Extension methods versus lambda expression in c# -
मान लीजिए मेरे पास विस्तार विधि है
सार्वजनिक स्थिर IEnumerable & lt; उत्पाद & gt; फ़िल्टर (यह IEnumerable & lt; उत्पाद & gt; उत्पाद एनाम, फ़नक & lt; उत्पाद, बूल & gt; चयनकर्ता पैरा) {वापसी उत्पादअनुम। जहां (चयनकर्ता पैरा); } जिससे मैं ऐसा कॉल करता हूं
फ़ंक्शन & lt; उत्पाद, बूल & gt; भाषा फ़िल्टर = प्रॉड = & gt; प्रोड। भाषा == लैंग; जो कि गलती नहीं कर रहा है, वह कार्यात्मक रूप से
var products = products.Where (q = & gt; q.Language == पैरामीटर) के समान है; मैं समझने की कोशिश कर रहा हूं कि जब कोई पहली नमूना के अनुसार एक विस्तार विधि का उपयोग कर सकता है, और जब linq वाक्यविन्यास का उपयोग किया जाता है।
< Div class = "post-text" itemprop = "text">
मुझे लगता है कि आप कुछ शब्दावली को भ्रमित कर रहे हैं। आपके द्वारा दिखाए गए फ़िल्टर विधि एक विस्तार विधि है (पैरामीटर सूची में this कीवर्ड द्वारा इंगित किया गया है। क्या आप "linq वाक्यविन्यास" के रूप में वर्णित हैं वास्तव में एक लैम्ब्डा अभिव्यक्ति है । सभी LINQ विधियों को विस्तार विधियों के रूप में लागू किया जाता है और कॉल करने की दो "शैलियों" का समर्थन किया जाता है:
-
असल में सीधे एक्सटेंशन विधि को कॉल करें जैसे कि वे थे प्रकार का एक हिस्सा विस्तारित किया जा रहा है। इसे आप productEnum के रूप में कॉल करते समय दिखाते हैं। कहाँ (चयनकर्ता पैरा) । -
अधिक एसक्यूएल- सिंटैक्स, जिसे LINQ क्वेरी सिंटैक्स कहा जाता है, कृपया ध्यान रखें कि इस SQL- की तरह सिंटैक्स को संकलक द्वारा अनुवादित करने के लिए वास्तव में एक्सटेंशन विधियां कॉल की जाती हैं।
जब आप Func & lt ; उत्पाद, बूल & gt; भाषाफिल्टर = प्रॉड = & gt; प्रोड। भाषा == लंग; , आप वास्तव में लैम्ब्डा अभिव्यक्ति को परिभाषित कर रहे हैं और उसे एक वेरिएबल ( languageFilter ) प्रकार फ़ंक्शन & lt; उत्पाद, बूल & gt; । उत्पाद। कहाँ (q = & Gt; Q.Language == पैरामीटर); स्टेटमेंट वही है जो इसके बजाय एक वैल्यूएबल में लैम्ब्डा एक्सप्रेशन को कैप्चर करने के बजाय है, जिसे आप केवल विस्तार विधि में पास करते हैं। आपके उदाहरण के लिए, प्राप्त करने के लिए LINQ क्वेरी सिंटैक्स का उपयोग करके एक ही परिणाम आप इसे पी में से
के समान लिखेंगे जहां p। भाषा == पैरामीटर ( मान लें कि पैरामीटर कहीं और परिभाषित है)
Comments
Post a Comment