दिलचस्प पोस्ट
एक बटन क्लिक करने पर PHP फ़ंक्शन कैसे कॉल करें पूरी ऑब्जेक्ट को सी # में एक लॉग में डंप करने का सबसे अच्छा तरीका क्या है? 100% की चौड़ाई वाली एचटीएमएल तालिका, टॉब में ऊर्ध्वाधर स्क्रॉल के साथ ie8 var w = window.open () – "संदेश: अमान्य तर्क।" स्ट्रिंग के लिए अवधि सी # में पॉप 3 का उपयोग कर ईमेल पढ़ना मैं ऑब्जेक्ट के आकार को पायथन में कैसे निर्धारित करूं? स्ट्रिंगफ़ॉर्मेट स्थानीयकरण के मुद्दों में डब्ल्यूपीएफ ब्राउज़र / टैब सक्रिय है या नहीं यह कैसे बताने के लिए विंडोज 7 पर जावा_होम कैसे सेट करें? एनजी-बाइंड-एचटीएमएल कम्पाइल ऐन्जलरज कोड कैसे करें JQuery दस्तावेज़। पहले से बनाम फोनगैप डिवाइस जब अस्थिर खोजशब्द को सी # में इस्तेमाल किया जाना चाहिए? पायथन, गणना सूची अंतर ऑपरेटिंग सिस्टम के विकास में शुरू करने के लिए कुछ संसाधन क्या हैं?

Linq क्या है और यह क्या करता है?

Linq क्या है? मुझे पता है कि यह डेटाबेस के लिए है, लेकिन यह क्या करता है?

वेब के समाधान से एकत्रित समाधान "Linq क्या है और यह क्या करता है?"

लिनक भाषा एकीकृत प्रश्न के लिए खड़ा है

YAQL (एक और क्वेरी भाषा) लिखने के बजाय, एमएस भाषा डेवलपर्स ने अपनी भाषाओं (जैसे कि सी # और वीबी) में सीधे प्रश्नों को व्यक्त करने का एक तरीका प्रदान किया है। इन प्रश्नों को बनाने के लिए तकनीक की मांग की गई बातों के कार्यान्वयन के विवरण पर भरोसा नहीं है, ताकि आप कई लक्ष्य (डेटाबेस, इन-मेमोरी ऑब्जेक्ट्स, एक्सएमएल) के विरुद्ध वैध प्रश्नों को लिख सकें, जिसमें अंतर्निहित तरीकों का व्यावहारिक रूप से कोई विचार नहीं है। क्वेरी निष्पादित किया जाएगा।

आइए, इस अन्वेषण को नेट फ्रेमवर्क (3.5) से संबंधित भागों के साथ शुरू करें।

  • लिनक ऑब्जेक्ट्स – सिस्टम.लिंक की जांच करें। क्वेरी विधियों के लिए संख्यात्मक । ये लक्ष्य IEnumerable<T> , किसी टाइप किए गए लूपबल संग्रह को एक प्रकार-सुरक्षित तरीके से पूछताछ करने की अनुमति देता है ये प्रश्न संकलित .NET विधियों पर भरोसा करते हैं, अभिव्यक्ति नहीं।

  • कुछ भी करने के लिए Linq – कुछ क्वेरी विधियों के लिए System.Linq.Queryable की जांच करें। ये लक्ष्य IQueryable<T> , अभिव्यक्ति पेड़ के निर्माण की अनुमति देता है जिसका अंतर्निहित कार्यान्वयन द्वारा अनुवाद किया जा सकता है

  • अभिव्यक्ति पेड़ – सिस्टम की जांच करें। लींक्स । एक्सपे्रेशन्स नामस्थान। यह डेटा के रूप में कोड है व्यवहार में, आपको इस सामान के बारे में पता होना चाहिए, लेकिन वास्तव में इन प्रकारों के खिलाफ कोड लिखने की आवश्यकता नहीं है। भाषा की विशेषताओं (जैसे लैम्ब्डा भाव) आपको इन प्रकारों से सीधे निपटने से बचने के लिए विभिन्न छोटे हाथों का उपयोग करने की अनुमति दे सकते हैं।

  • Linq to Sql – सिस्टम.डेटा.लिंक नामस्थान की जांच करें। खासकर DataContext नोट करें यह सी # टीम द्वारा निर्मित एक डाटाएवस तकनीक है यह सिर्फ काम करता है

  • यूनिट्स में लिनक – सिस्टम.डेटा.ओब्जेक्ट्स नेमस्पेस की जांच करें। विशेषकर ObjectContext नोट करें यह एडीओनेट टीम द्वारा निर्मित एक डाटाएवस तकनीक है। Linq to Sql की तुलना में यह जटिल, शक्तिशाली और कठिन है

  • Linq to Xml – System.Xml.Linq नामस्थान की जांच करें। मूलतः, लोग System.Xml में सामान से संतुष्ट नहीं थे। इसलिए एमएस ने इसे फिर से लिखा है और कुछ तरीकों को पेश करने के लिए पुनः लिखने का फायदा उठाया है, जो एक्सएमएल के खिलाफ LinqToObjects का उपयोग करना आसान बनाता है।

  • कुछ अच्छे सहायक प्रकार, जैसे फ़नक और एक्शन ये प्रकार सामान्य समर्थन के साथ प्रतिनिधि हैं। चला गया अपने खुद के कस्टम (और अन-विनिमय) प्रतिनिधि प्रकारों को घोषित करने के दिन।

उपर्युक्त सभी नेट फ्रेमवर्क का हिस्सा है, और किसी भी नेट भाषा (vb.net, c #, लोहा पायथन, कोबोल नेट …) से उपलब्ध है।


ठीक है, भाषा सुविधाओं पर मैं सी # करने के लिए छड़ी करने जा रहा हूँ, क्योंकि यह है कि मैं क्या सबसे अच्छा पता है Vb.Net में भी कई समान सुधार (और एक जो कि सी # नहीं मिला – एक्सएमएल लिटरल्स) था। यह एक छोटी और अपूर्ण सूची है

  • विस्तार तरीकों – यह आपको एक विधि टाइप करने के लिए "जोड़" करने देता है यह विधि वास्तव में एक स्थिर विधि है जिसे प्रकार का एक उदाहरण दिया गया है, और उस प्रकार के सार्वजनिक अनुबंध तक सीमित है … लेकिन यह उन विधियों को जोड़ने के लिए बहुत उपयोगी है जिन्हें आप नियंत्रित नहीं करते (स्ट्रिंग), या जोड़ना ( पूरी तरह से कार्यान्वित) इंटरफेस के लिए सहायक विधियों।

  • क्वेरी सिंटैक्स क्वेरी – यह आपको एसक्यूएल की तरह संरचना में लिखने की अनुमति देता है। इस सब चीज़ों को सिस्टम.लिंक.कॉन्टेबल या सिस्टम.लिंक.अन्यरेबल (मेरे कस्टम्स के प्रकार के आधार पर) के तरीकों में अनुवाद किया जाता है। यह पूरी तरह से वैकल्पिक है और इसके बिना आप Linq का उपयोग कर सकते हैं। क्वेरी घोषणापत्र की इस शैली का एक फायदा यह है कि सीमा चर को स्कॉ़ड किया गया है: उन्हें प्रत्येक खंड के लिए पुन: घोषित करने की आवश्यकता नहीं है।

     IEnumerable<string> result = from c in myCustomers where c.Name.StartsWith("B") select c.Name; 
  • लम्बा अभिव्यक्ति – यह एक विधि निर्दिष्ट करने के लिए एक लय है। सी # संकलक प्रत्येक को किसी अनाम पद्धति या एक सच्चे सिस्टम में अनुवादित करेगा। लिंक्स। System.Linq.Expressions.ExpressionSystem.Linq.Expressions.Expression आपको वास्तव में Linq को अच्छी तरह से उपयोग करने के लिए इन्हें समझने की ज़रूरत है तीन भागों हैं: एक पैरामीटर सूची, एक तीर और एक विधि शरीर।

     IEnumerable<string> result = myCustomers .Where(c => c.Name.StartsWith("B")) .Select(c => c.Name);` 
  • अनाम प्रकार – कभी-कभी कंपाइलर में आपके लिए एक प्रकार बनाने के लिए पर्याप्त जानकारी होती है ये प्रकार सचमुच गुमनाम नहीं हैं … कंपाइलर उन्हें जब उन्हें बनाता है उन्हें नाम देता है लेकिन उन नामों का संकलन समय पर किया जाता है, जो डेवलपर के लिए डिजाइन समय पर उस नाम का उपयोग करने के लिए बहुत देर हो चुकी है।

     myCustomers.Select(c => new { Name = c.Name; Age = c.Age; }) 
  • अप्रभावित प्रकार – कभी-कभी कंपाइलर में प्रारंभिक रूप से पर्याप्त जानकारी होती है, जिससे वह आपके लिए प्रकार का पता लगा सकता है आप var कीवर्ड का उपयोग करके ऐसा करने के लिए संकलक को निर्देश दे सकते हैं। बेनामी प्रकार के लिए चर को घोषित करने के लिए इम्प्लासिट टाइपिंग की आवश्यकता है, क्योंकि प्रोग्रामर अज्ञात प्रकार के नाम का उपयोग नहीं कर सकते हैं।

     //The compiler will determine that names is an IEnumerable<string> var names = myCustomers.Select(c => c.Name); 

LINQ (भाषा एकीकृत प्रश्न) इसका उल्लेख कर सकते हैं:

  • संग्रह और इटरेटर हेरफेर के लिए एक लाइब्रेरी जो उच्च-क्रम कार्यों के तर्कों (System.Linq) के व्यापक उपयोग को बनाता है

  • सरल फ़ंक्शन के रूप में सरल कार्यों को पारित करने और हेरफेर करने के लिए एक पुस्तकालय (System.Linq.Expressions)

  • प्रसंस्करण संग्रह के लिए अधिक एसक्यूएल-जैसी सिंटैक्स, गुमनाम कार्यों के लिए एक अधिक कॉम्पैक्ट नोटेशन, और अंतिम सहायक कार्यों से वाक्यविन्यास रूप से अप्रभेद्य स्थिर स्थैतिक कार्यों को पेश करने के लिए एक तंत्र प्रदान करने के लिए विभिन्न भाषाओं के लिए एक वाक्यविन्यास विस्तार

  • एक इंटरफ़ेस परिभाषा जिसमें डेटा प्रदाता क्वेरी संरचना प्राप्त करने के लिए अनुरूप हो सकते हैं और उस पर ऑप्टिमाइज़ेशन संभवतः प्रदर्शन करते हैं, या कभी-कभी संगत डेटा प्रदाता स्वयं

घटकों को अलगाव या संयुक्त में इस्तेमाल किया जा सकता है।

संक्षेप में, LINQ (भाषा-एकीकृत क्वेरी) आपको सीधे अपने कोड में क्वेरी लिखने की अनुमति देता है। वे प्रश्न संबंधपरक डेटाबेस पर हो सकते हैं, लेकिन एक्सएमएल या इन-मेमोरी कंटेनर ऑब्जेक्ट्स जैसे कि एरेज़ और सूचियों पर भी हो सकते हैं। अधिक जानकारी एमएसडीएन लाइब्रेरी में उपलब्ध है: http://msdn.microsoft.com/en-us/library/bb308959.aspx

मैं एक साधारण उत्तर की कोशिश कर रहा हूँ: LINQ आपके लिए एक डेटाबेस (या अन्य डेटास्टोर, एक्सएमएल आदि) को क्वेरी भाषा का उपयोग करने के लिए एक तरीका है जो एसक्यूएल के समान है, लेकिन एक .नेट अनुप्रयोग के अंदर संकलित किया जा सकता है।

LINQ सी # प्रोग्रामिंग भाषा से व्युत्पन्न मुहावरे का उपयोग कर डेटा निकालने के लिए एक तकनीक है। जबकि एसक्यूएल के लिए कार्यात्मक डिजाइन में बहुत अधिक बकाया है, यह मूल रूप से अपनी स्वयं की डेटा क्वेरी भाषा है यह डेटा स्रोतों (एसक्यूएल डाटाबेस, इन-मेमोरी प्रस्तुतियों, एक्सएमएल, आदि) के एक व्यापक स्पेक्ट्रम में चल रहा है। लिनक्यू टू एसक्यूएल, विशेष रूप से, एम्बेडेड एसक्यूएल के पारंपरिक उपयोग के विपरीत माना जाना चाहिए जो अक्सर एसक्यूएल प्रोग्रामिंग और सी # / वीबी प्रोग्रामिंग के बीच एक "प्रतिबाधा बेमेल" के रूप में संदर्भित होता है।

LINQ और इसकी सीमाओं की चर्चा के लिए, आप इस संबंधित प्रश्न पर एक नज़र डालना चाह सकते हैं: क्या LINQ को SQL याद नहीं होता है?

LINQ भाषा एकीकृत प्रश्न के लिए खड़ा है, और सीएलआर में एक सामान्य उद्देश्य "क्वेरी" तंत्र प्रदान करने का एक तरीका है।

यह सबसे बुनियादी स्तर पर, इसमें IEnumerable <T> – जैसे, चयन, योग, कहां पर विधियों का एक सेट होता है – इसका उपयोग प्रतिबंधों, अनुमानों, आदि के लिए किया जा सकता है। [1]

इसे थोड़ा आगे ले जाने के लिए, LINQ एक नया LINQ प्रदाता मॉडल भी परिभाषित करता है जो अभिव्यक्ति के पेड़ को ले सकता है और सीएलआर – जैसे।, LINQ से SQL, LINQ से XML, LINQ के बाहर एक डेटा स्रोत के खिलाफ "मूल" NHibernate, आदि के लिए

सी # और वीबी.नेट ने एक क्वेरी सिंटैक्स को भी परिभाषित किया है जो आपको जोर से टाइप किए गए क्वेरी इनलाइन (जो एसक्यूएल के समान दिखता है) लिखने की अनुमति देता है, जिसके बाद कंपाइलर समतुल्य IEnumerable <T> कॉल में अनुवाद करता है

मेरे लिए, LINQ के बारे में सबसे दिलचस्प बात यह है कि सभी सी # और वीबी.नेट सुविधाओं का समर्थन करने के लिए आवश्यक थे जो अपने दाहिनी ओर उपयोगी होते हैं। विस्तार विधियों, अनाम प्रकार, लैम्ब्डा भाव, और अंतर्निहित टाइपिंग सभी को LINQ का समर्थन करने के लिए आवश्यक थे – लेकिन हम उन विशेषताओं को शुद्ध LINQ संदर्भ के बाहर उपयोग करते हैं।

[1] ये संबंधपरक शब्द हैं, कार्यात्मक प्रोग्रामर शायद मैप, कम, मोड़, आदि को पसंद करेंगे।

http://msdn.microsoft.com/en-us/netframework/aa904594.aspx

"LINQ प्रोजेक्ट .NET फ्रेमवर्क में विस्तार के एक सेट के लिए एक कोडनाम है जो कि भाषा-एकीकृत क्वेरी, सेट और परिचालन परिचालन को शामिल करता है। यह सी # और विज़ुअल बेसिक के साथ मूल भाषा वाक्यविन्यास के साथ प्रश्नों के लिए विस्तार करता है और क्लास पुस्तकालयों का लाभ उठाने के लिए प्रदान करता है इन क्षमताओं। "