c# - Using IQueryable with Linq -


LINQ के संदर्भ में IQueryable का क्या उपयोग है?

क्या इसका विस्तार विधियों या किसी अन्य उद्देश्य के विकास के लिए उपयोग किया जाता है?

बहुत पूर्ण है, लेकिन मैंने सोचा कि मैं ' उपयोगकर्ता के दृष्टिकोण से, इसके बारे में कुछ भी जोड़ने के लिए, साथ ही ...


उपयोगकर्ता के दृष्टिकोण से मुख्य अंतर यह है, जब आप IQueryable & lt; T & gt; / Code> (एक प्रदाता जो चीजों को सही तरीके से समर्थन करता है) के साथ, आप बहुत सारे संसाधनों को सहेज सकते हैं। उदाहरण के लिए, यदि आप किसी दूरस्थ डेटाबेस के विरुद्ध कई ORM सिस्टम के साथ काम कर रहे हैं, तो आपके पास विकल्प तालिका से दो तरीकों से प्राप्त डेटा, एक जो IEnumerable & lt; T & gt; देता है, और जो IQueryable & lt; T & gt; देता है उदाहरण के लिए कहें, आपके पास एक उत्पाद तालिका है, और आप उन सभी उत्पादों को प्राप्त करना चाहते हैं जिनकी लागत> $ 25 है।

यदि आप करते हैं:

  IEnumerable & lt; उत्पाद & gt ; उत्पादों = myORM.GetProducts (); Var productsOver25 = products.Where (पी = & gt; पी। कॉस्ट & gt; = 25.00);  

यहां क्या होता है, यह है कि डेटाबेस सभी उत्पादों को लोड करता है, और उन्हें अपने कार्यक्रम में तार में भेजता है। आपका प्रोग्राम तब डेटा को फ़िल्टर करता है संक्षेप में, डेटाबेस एक SELECT * से उत्पादों करता है, और आपके लिए हर उत्पाद को देता है।

सही IQueryable & lt; T & gt; प्रदाता, पर दूसरी ओर, आप यह कर सकते हैं:

  IQueryable & lt; उत्पाद & gt; उत्पादों = myORM.GetQueryableProducts (); Var productsOver25 = products.Where (पी = & gt; पी। कॉस्ट & gt; = 25.00);   

कोड समान दिखता है, लेकिन यहां अंतर यह है कि एसक्यूएल निष्पादित किया जाएगा SELECT * से उत्पादों की कीमत & gt; = 25

एक डेवलपर के रूप में आपके पीओवी से, यह वही दिखता है हालांकि, प्रदर्शन के दृष्टिकोण से, आप केवल 20,000 के बजाय नेटवर्क पर 2 रिकॉर्ड वापस कर सकते हैं ....


Comments

Popular posts from this blog

ios - Form Sheet content disappearing -

MySql variables and php -

c++ - an enclosing-function local variable cannot be referenced in a lambda body unless if it is in capture list -