2011-06-07 19 views
21

क्या यह IEnumerable<T> है। जहां तक ​​मुझे पता है, संदर्भ हमेशा कक्षा के उदाहरण को इंगित करता है। LINQ क्वेरी वास्तव में किस प्रकार का इंगित करती है?LINQ क्वेरी का रिटर्न प्रकार क्या है?

+1

सवाल क्यों बंद कर रहा है? यह अच्छी प्रोग्रामिंग प्रथाओं को सिखाता है (दिखा रहा है कि आपको किस पर निर्भर नहीं होना चाहिए: कार्यान्वयन) – helios

+3

यह LINQ क्वेरी क्या है इस पर निर्भर करता है। –

+0

मैं कहूंगा कि हमें पर्याप्त रूप से इसका उत्तर देने में सक्षम होने के लिए इस प्रश्न के पीछे प्रेरणा की आवश्यकता है। – AakashM

उत्तर

3

मुझे नहीं पता लेकिन मुझे लगता है कि यह एक आंतरिक प्रकार है। आपको कक्षा के बारे में सोचना नहीं है।

वास्तव में यह ठोस क्वेरी के आधार पर विभिन्न वर्ग हो सकता है। कंपाइलर शर्तों/प्रसंस्करण के आधार पर LINQ अभिव्यक्ति को एक या दूसरे कार्यान्वयन में परिवर्तित कर सकता है।

0

अगर मैं गलत नहीं हूँ, IEnumerable<T>, जहां टी आपकी क्वेरी

+2

मुझे लगता है कि वह कंक्रीट क्लास को जानना चाहता है, इंटरफ़ेस नहीं। बेशक यह अप्रासंगिक है (और यह प्रत्येक ठोस क्वेरी के लिए अलग हो सकता है) – helios

10

अपने मूल डेटा स्रोत पर निर्भर करता है पर निर्भर करता है, यह या तो IEnumerable या है IQueryable:

एक Linq डेटाबेस क्वेरी के परिणाम आम तौर पर IQueryable<T> है जो IENumerable < टी>, IQueryable, और IENumerable से लिया गया है।

अपने डेटाबेस क्वेरी एक OrderBy खंड शामिल हैं, प्रकार, IOrderedQueryable<T> है IQueryable < से प्राप्त की जा रही टी>

तो आपके डेटा स्रोत एक IEnumerable है, परिणाम प्रकार IEnumerable<T>

+0

मुझे लगता है कि उसका मतलब है * वास्तविक * वर्ग, इंटरफ़ेस नहीं। –

+0

अन्य सभी उत्तरों को वोट देने का कोई कारण? – devio

+0

मैं बस वही बात सोच रहा था। मुझे लगता है कि एक प्रश्न के लिए केवल एक ही सही उत्तर (उसके दिमाग में) हो सकता है कि वास्तव में आप इसे कैसे समझते हैं इसके आधार पर कई उत्तरों प्राप्त कर सकते हैं। बीटीडब्ल्यू मुझे अब तक आपका जवाब पसंद है! चलो देखते हैं कि ओपी को क्या दिमाग था। – Maverik

14

आप मिल सकती है यह .GetType() पर अपने IEnumerable<T> परिवर्तनीय और डीबगर में प्रकार का निरीक्षण करके कॉल करके बाहर निकलता है।

विभिन्न LINQ प्रदाताओं और यहां तक ​​कि विभिन्न LINQ विधियों के लिए, ऐसे प्रकार अलग-अलग हो सकते हैं या नहीं भी हो सकते हैं।

अपने कोड के लिए क्या मायने रखती है, कि वे सभी को लागू IEnumerable<T> जो आप के साथ काम करना चाहिए, या IQueryable<T> जो भी भाव स्वीकार करता है, जिसका अर्थ है अपने विधेय और अनुमानों वाक्य रचना के पेड़ बन जाएगा और रनटाइम पर एक LINQ प्रदाता द्वारा हेरफेर किया जा सकता है जैसे एसक्यूएल में अनुवाद किया जाना है।

वास्तविक कक्षाएं, यदि आप यही पूछ रहे हैं, तो संकलक-उत्पन्न भी हो सकता है, उदा। yield return अभिव्यक्ति का अनुवाद इस तरह के वर्ग में किया जाता है।
किसी भी तरह से, वे आम तौर पर आंतरिक होते हैं और आपको कभी भी कभी पर निर्भर नहीं होना चाहिए

0

आप क्वेरी ऑपरेशन के तीन हिस्सों के लिए here देख सकते हैं। आप देख सकते हैं कि LINQ क्वेरी का रिटर्न प्रकार IENumerable < int> है।

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