2011-08-21 16 views
7

मैं LINQ को समझना चाहता हूं और इस मामले पर कुछ शोध किया और पाया कि IEnumerable और IQueryable में LINQ विधियां हैं। हालांकि जब मैं इन प्रकार के दस्तावेज को देखता हूं तो मुझे कोई LINQ विधियां नहीं दिखाई देती हैं।LINQ तरीके एक्सटेंशन तरीके हैं?

क्या लाइनक्यू विधियों के विस्तार विधियां हैं जो रनटाइम पर IEnumerable/IQueryable प्रकारों में डाली गई हैं और यदि ऐसा है तो क्यों?

+0

यह एक प्रश्न की तरह लगता है जो उत्तर के उत्तर प्राप्त करने जा रहा है। मुझे लगता है कि आप लौ युद्ध शुरू करने वाले हैं। – jonathanpeppers

+0

रनटाइम पर एक्सटेंशन विधियां डाली नहीं गई हैं। – Tipx

+0

एरिक लिपर्ट द्वारा [पैटर्न के बाद] पढ़ें (http://blogs.msdn.com/b/ericlippert/archive/2011/06/30/following-the-pattern.aspx)। कारण बताते हैं। – Eranga

उत्तर

15

आईन्यूमेरेबल पर विधियों को जोड़ने का अर्थ यह होगा कि IENumerable से प्राप्त होने वाले सभी प्रकारों को स्वयं को लागू करना होगा। अब विस्तार विधियों के साथ हम इंटरफेस में जोड़ने के कार्यान्वयन को जोड़ सकते हैं।

एक अन्य दुष्प्रभाव यह होगा कि .NET 2.0 में लिखा गया कोड अभी भी लिंक के साथ 3.0 के साथ संकलित होगा। अन्यथा यदि आपने अपनी परियोजना में कहीं भी आईनेमेरेबल लागू किया है तो आपको इंटरफ़ेस में सभी नए तरीकों को भी लागू करना होगा।

लिंक टू ऑब्जेक्ट्स के लिए LINQ विधियों को Enumerable कक्षा पर परिभाषित किया गया है।

इसके अलावा, LINQ एक विशिष्ट वाक्यविन्यास का उपयोग करके घोषित विधियों की खोज करता है और इंटरफ़ेस या कक्षा आधारित नहीं है। आपको जॉन स्कीट की Edulinq श्रृंखला मिल सकती है।

MSDN एक्सटेंशन विधियों पर लिंक।

+2

कि उत्तम दर्जे की व्याख्या है। और निश्चित रूप से, जोन्स लेख शीर्ष पायदान हैं! – Zenwalker

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