2009-04-17 6 views
10

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

जब मैं निम्नलिखित कोड लिखता हूं, तो क्या मैं कह सकता हूं कि मैं "LINQ का उपयोग कर रहा हूं" या नहीं?

List<string> words = new List<string>() { "one", "two", "three" }; 
words.ForEach(word => Console.WriteLine(word.ToUpper())); 

उदा। "foreach" विधि व्यापक रूप से एक "LINQ विधि" के रूप में जाना जाता है अभी तक अपने घर System.Collections.Generic.List में है और नहीं System.Linq

+0

साफ सवाल है, कुछ चीजें हैं जो मैं सोच रहा है स्पष्ट करता है। +1। –

उत्तर

12

यह LINQ का हिस्सा नहीं है - यह LINQ से पहले .NET 2.0 में मौजूद था। यह LINQ- जैसा है, लेकिन मैं नहीं कहूंगा कि यह LINQ का हिस्सा है।

दूसरी ओर, यदि आप अपने स्वयं IEnumerable<T> विस्तार विधि ForEach (MoreLINQ में) की तरह है कि एक गैर मानक LINQ ऑपरेटर के रूप में माना जा सकता है ...

+0

शाप, मेरे ठीक पहले। –

-2

यदि आप LINQ को फिर से शुरू करने वाले कीवर्ड के रूप में उचित ठहराने का प्रयास कर रहे हैं, तो शायद नहीं। लेकिन उस सुविधा को लिंक की कार्यक्षमता के साथ जोड़ा गया था, और कार्यक्षमता के एक ही परिवार में है, इसलिए सॉर्टोफ :)

+2

IList । LINQ के साथ * नहीं * जोड़ा गया था। यह .NET 2.0 में मौजूद था। – Samuel

3

foreach LINQ नहीं है लागू, यह सिर्फ है एक तरीका जो एक प्रतिनिधि लेता है। .NET 2.0 के बाद से वहां रहे थे।

0

आपके द्वारा पोस्ट किए गए उदाहरण में, आप LINQ का उपयोग नहीं कर रहे हैं। फॉरएच विधि लूप को स्पष्ट रूप से लिखने के बिना आपके गणितीय डेटाटाइप में आइटमों को फिर से चलाने का एक अच्छा तरीका है।

1

एक प्रतिनिधि लेना इसे LINQ नहीं बनाता है।

Foreach एक "LINQ" विधि नहीं है, यह Enumerable या Queryable का सदस्य नहीं है, और इसके लिए कोई समझ वाक्यविन्यास नहीं है।

और, सबसे अधिक, यह स्रोत (सूची) को संशोधित करता है, जो ऑब्जेक्ट्स के लिए LINQ कुछ नहीं है।

मैं "नहीं" कहूंगा।

2

लिंक का अर्थ है "भाषा एकीकृत क्वेरी"।

var result = from word in words 
       where word.Length < 5 
       select word; 

जिसके अनुसार, IEnumerable + आलसी मूल्यांकन + lamdba अभिव्यक्ति + बंद की व्यवस्था है जिस पर LINQ अपने आप में काफी महत्वपूर्ण है पर निर्भर करता है: वास्तव में LINQ "का उपयोग" होने के लिए, आप इस प्रकार का निर्माण कुछ चाहिए अपने स्वयं के buzzword वारंट करने के लिए। यह कहकर कि आप लैम्ब्डा अभिव्यक्तियों का उपयोग कर सकते हैं वास्तव में इसे काट नहीं सकते हैं, इमो। बिंदु में मामला यह नमूना है। आप सकता है उपयोग LINQ, लेकिन क्यों जब इस बस के रूप में अच्छा और बहुत कम है:

var result = words.Where(w => w.Length < 5); 
+0

मैं तर्क दूंगा कि LINQ का उपयोग केवल नामस्थानों का उपयोग करना होगा। आपको लिंग का उपयोग करने के लिए क्वेरी सिंटैक्स का उपयोग करने की आवश्यकता नहीं है।तुम बस के रूप में आसानी 'की तरह वर परिणाम कुछ कर सकते हैं = words.Where (x => x.Length <5);' –

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