संपादित प्रश्न का उत्तर देने के लिए: संक्षेप में, जब भी आपको "क्वेरी" कार्यक्षमता को लागू करना हो तो LINQ का उपयोग करना फायदेमंद होता है (कि LINQ में Q किसके लिए है)। एक सटीक डोमेन को परिभाषित करना मुश्किल है, लेकिन यह संग्रह से डेटा निकालने और हेरफेर करने से जुड़े कई कार्यों को सरल करता है।
थोड़ा विस्तार करने के लिए, बहुत सी क्वेरी कार्यक्षमता को सीधे भाषा में लाया गया है (या बल्कि, विभिन्न LINQ- कार्यान्वयनकर्ता), इसलिए एग्रीगेशन, ऑर्डरिंग, ग्रुपिंग, फ़िल्टरिंग, प्रोजेक्शन, जॉइन (और बहुत कुछ) जैसी चीजें सभी के लिए संभाला जाता है। आप। LINQ- आधारित समाधान भी आमतौर पर की तुलना में कम होते हैं यदि आप उन्हें "हाथ से" लागू करने के लिए थे, और उनके इरादे को बहुत बेहतर तरीके से संवाद करते हैं।
एक सरल उदाहरण जो अक्सर LINQ की शक्ति को व्यक्त करने में मदद करता है एक निर्देशिका की सामग्री को प्रदर्शित करने के लिए, विस्तार द्वारा समूहीकृत। अपने सिर में एक विशिष्ट अनिवार्य कार्यान्वयन के माध्यम से चलाएं - पहले से ही बहुत सारे कार्यान्वयन विवरण होंगे। शायद हम Dictionary<String, List<String>>
विस्तार से फ़ाइलों को अनुक्रमित करने के लिए एक का उपयोग करेंगे । बेशक, हमें जांचना होगा कि क्या कोई कुंजी पहले से मौजूद है, एक सूची को तत्काल, इसमें जोड़ें, आदि। यह कुछ इस तरह से हो सकता है:
Dictionary<string, List<string>> fileGroups = new Dictionary<string, List<string>>();
foreach (string file in Directory.GetFiles(Environment.CurrentDirectory))
{
string extension = Path.GetExtension(file).ToLower();
if (!fileGroups.ContainsKey(extension))
{
fileGroups[extension] = new List<string>();
}
fileGroups[extension].Add(file);
}
LINQ समतुल्य पर विचार करें:
var query = from file in Directory.GetFiles(Environment.CurrentDirectory)
group file by Path.GetExtension(file).ToLower();
ध्यान दें कि क्वेरी केवल 2 लाइनें हैं, निश्चित रूप से किसी भी अनिवार्य समाधान की तुलना में कम है जो हम साथ आ सकते हैं। यह भी बहुत पठनीय है; सिग्नल-टू-शोर अनुपात पहले समाधान के साथ की तुलना में अधिक है। LINQ में जो नए हैं उनके लिए, आप उस क्वेरी के परिणामों को निम्नानुसार आउटपुट करेंगे:
foreach (var fileGroup in query)
{
Console.WriteLine(String.Format("*** Files with extension: {0}", group.Key));
foreach (string file in fileGroup)
{
Console.WriteLine(file);
}
}
अधिक जटिल उदाहरणों के साथ, मतभेद सामान्य रूप से और भी अधिक विशाल हो जाते हैं (उदाहरण के लिए, कई क्षेत्रों द्वारा समूहीकृत करने पर विचार करें)। इसलिए, संक्षेप में, LINQ कई "दिन प्रतिदिन" डेटा क्वेरी समस्याओं को एक तरह से हल करता है जो अक्सर कम और अधिक आत्म-वर्णनात्मक होता है। यह सिंटैक्स और तकनीक सीखने की मामूली लागत पर आता है, लेकिन लाभ नकारात्मक को बहुत अधिक प्रभावित करता है।